{
  "id": "c99ef83ca5fcbf3b0fddb30b6eb0e9c0",
  "_format": "hh-sol-build-info-1",
  "solcVersion": "0.7.6",
  "solcLongVersion": "0.7.6+commit.7338295f",
  "input": {
    "language": "Solidity",
    "sources": {
      "contracts/token/ERC1155721/mocks/ERC1155721InventoryBurnableMock.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {IForwarderRegistry} from \"ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol\";\nimport {IERC165} from \"@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol\";\nimport {IERC1155MetadataURI} from \"./../../../token/ERC1155/interfaces/IERC1155MetadataURI.sol\";\nimport {IERC1155InventoryCreator} from \"./../../../token/ERC1155/interfaces/IERC1155InventoryCreator.sol\";\nimport {IERC1155721InventoryMintable} from \"./../interfaces/IERC1155721InventoryMintable.sol\";\nimport {IERC1155721InventoryDeliverable} from \"./../interfaces/IERC1155721InventoryDeliverable.sol\";\nimport {IERC1155721InventoryBurnable} from \"./../interfaces/IERC1155721InventoryBurnable.sol\";\nimport {ManagedIdentity} from \"@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol\";\nimport {Recoverable} from \"@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol\";\nimport {UsingUniversalForwarding} from \"ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol\";\nimport {MinterRole} from \"@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol\";\nimport {ERC1155721InventoryBurnable} from \"./../ERC1155721InventoryBurnable.sol\";\nimport {NFTBaseMetadataURI} from \"./../../../metadata/NFTBaseMetadataURI.sol\";\n\n/**\n * @title ERC1155 & ERC721 Inventory Burnable Mock.\n */\ncontract ERC1155721InventoryBurnableMock is\n    Recoverable,\n    UsingUniversalForwarding,\n    ERC1155721InventoryBurnable,\n    IERC1155721InventoryMintable,\n    IERC1155721InventoryDeliverable,\n    IERC1155InventoryCreator,\n    NFTBaseMetadataURI,\n    MinterRole\n{\n    constructor(\n        IForwarderRegistry forwarderRegistry,\n        address universalForwarder,\n        uint256 collectionMaskLength\n    )\n        ERC1155721InventoryBurnable(\"ERC1155721InventoryBurnableMock\", \"INVB\", collectionMaskLength)\n        UsingUniversalForwarding(forwarderRegistry, universalForwarder)\n        MinterRole(msg.sender)\n    {}\n\n    //======================================================= ERC165 ========================================================//\n\n    /// @inheritdoc IERC165\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n        return interfaceId == type(IERC1155InventoryCreator).interfaceId || super.supportsInterface(interfaceId);\n    }\n\n    //================================================= ERC1155MetadataURI ==================================================//\n\n    /// @inheritdoc IERC1155MetadataURI\n    function uri(uint256 id) public view virtual override returns (string memory) {\n        return _uri(id);\n    }\n\n    //=============================================== ERC1155InventoryCreator ===============================================//\n\n    /// @inheritdoc IERC1155InventoryCreator\n    function creator(uint256 collectionId) external view override returns (address) {\n        return _creator(collectionId);\n    }\n\n    //=========================================== ERC1155InventoryCreator (admin) ===========================================//\n\n    /**\n     * Creates a collection.\n     * @dev Reverts if the sender is not the contract owner.\n     * @dev Reverts if `collectionId` does not represent a collection.\n     * @dev Reverts if `collectionId` has already been created.\n     * @dev Emits a {IERC1155Inventory-CollectionCreated} event.\n     * @param collectionId Identifier of the collection.\n     */\n    function createCollection(uint256 collectionId) external {\n        _requireOwnership(_msgSender());\n        _createCollection(collectionId);\n    }\n\n    //============================================= ERC1155721InventoryMintable =============================================//\n\n    /// @inheritdoc IERC1155721InventoryMintable\n    /// @dev Reverts if the sender is not a minter.\n    function mint(address to, uint256 nftId) external virtual override {\n        _requireMinter(_msgSender());\n        _mint(to, nftId, \"\", false);\n    }\n\n    /// @inheritdoc IERC1155721InventoryMintable\n    /// @dev Reverts if the sender is not a minter.\n    function batchMint(address to, uint256[] calldata nftIds) external virtual override {\n        _requireMinter(_msgSender());\n        _batchMint(to, nftIds);\n    }\n\n    /// @inheritdoc IERC1155721InventoryMintable\n    /// @dev Reverts if the sender is not a minter.\n    function safeMint(\n        address to,\n        uint256 nftId,\n        bytes calldata data\n    ) external virtual override {\n        _requireMinter(_msgSender());\n        _mint(to, nftId, data, true);\n    }\n\n    /// @inheritdoc IERC1155721InventoryMintable\n    /// @dev Reverts if the sender is not a minter.\n    function safeMint(\n        address to,\n        uint256 id,\n        uint256 value,\n        bytes calldata data\n    ) external virtual override {\n        _requireMinter(_msgSender());\n        _safeMint(to, id, value, data);\n    }\n\n    /// @inheritdoc IERC1155721InventoryMintable\n    /// @dev Reverts if the sender is not a minter.\n    function safeBatchMint(\n        address to,\n        uint256[] calldata ids,\n        uint256[] calldata values,\n        bytes calldata data\n    ) external virtual override {\n        _requireMinter(_msgSender());\n        _safeBatchMint(to, ids, values, data);\n    }\n\n    //============================================ ERC1155721InventoryDeliverable =============================================//\n\n    /// @inheritdoc IERC1155721InventoryDeliverable\n    /// @dev Reverts if the sender is not a minter.\n    function safeDeliver(\n        address[] calldata recipients,\n        uint256[] calldata ids,\n        uint256[] calldata values,\n        bytes calldata data\n    ) external virtual override {\n        _requireMinter(_msgSender());\n        _safeDeliver(recipients, ids, values, data);\n    }\n\n    //======================================== Meta Transactions Internal Functions =========================================//\n\n    function _msgSender() internal view virtual override(ManagedIdentity, UsingUniversalForwarding) returns (address payable) {\n        return UsingUniversalForwarding._msgSender();\n    }\n\n    function _msgData() internal view virtual override(ManagedIdentity, UsingUniversalForwarding) returns (bytes memory ret) {\n        return UsingUniversalForwarding._msgData();\n    }\n\n    //=============================================== Mock Coverage Functions ===============================================//\n\n    function msgData() external view returns (bytes memory ret) {\n        return _msgData();\n    }\n}\n"
      },
      "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.7.0;\n\ninterface IForwarderRegistry {\n    function isForwarderFor(address, address) external view returns (bool);\n}\n"
      },
      "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165.\n */\ninterface IERC165 {\n    /**\n     * @dev Returns true if this contract implements the interface defined by\n     * `interfaceId`. See the corresponding\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n     * to learn more about how these ids are created.\n     *\n     * This function call must use less than 30 000 gas.\n     */\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"
      },
      "contracts/token/ERC1155/interfaces/IERC1155MetadataURI.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC1155 Multi Token Standard, optional extension: Metadata URI.\n * @dev See https://eips.ethereum.org/EIPS/eip-1155\n * @dev Note: The ERC-165 identifier for this interface is 0x0e89341c.\n */\ninterface IERC1155MetadataURI {\n    /**\n     * @notice A distinct Uniform Resource Identifier (URI) for a given token.\n     * @dev URIs are defined in RFC 3986.\n     * @dev The URI MUST point to a JSON file that conforms to the \"ERC1155 Metadata URI JSON Schema\".\n     * @dev The uri function SHOULD be used to retrieve values if no event was emitted.\n     * @dev The uri function MUST return the same value as the latest event for an _id if it was emitted.\n     * @dev The uri function MUST NOT be used to check for the existence of a token as it is possible for\n     *  an implementation to return a valid string even if the token does not exist.\n     * @return URI string\n     */\n    function uri(uint256 id) external view returns (string memory);\n}\n"
      },
      "contracts/token/ERC1155/interfaces/IERC1155InventoryCreator.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC1155 Inventory, optional extension: Creator.\n * @dev See https://eips.ethereum.org/EIPS/eip-1155\n * @dev Note: The ERC-165 identifier for this interface is 0x510b5158.\n */\ninterface IERC1155InventoryCreator {\n    /**\n     * Returns the creator of a collection, or the zero address if the collection has not been created.\n     * @dev Reverts if `collectionId` does not represent a collection.\n     * @param collectionId Identifier of the collection.\n     * @return The creator of a collection, or the zero address if the collection has not been created.\n     */\n    function creator(uint256 collectionId) external view returns (address);\n}\n"
      },
      "contracts/token/ERC1155721/interfaces/IERC1155721InventoryMintable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC1155 Inventory with support for ERC721, optional extension: Mintable.\n * @dev The ERC721 Mintable function `safeMint(address,uint256,bytes)` is not provided as\n *  the ERC1155 Mintable function `safeMint(address,uint256,uint256,bytes)` can be used instead.\n */\ninterface IERC1155721InventoryMintable {\n    /**\n     * Safely mints some token (ERC1155-compatible).\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if `id` is not a token.\n     * @dev Reverts if `id` represents a Non-Fungible Token and `value` is not 1.\n     * @dev Reverts if `id` represents a Non-Fungible Token which has already been minted.\n     * @dev Reverts if `id` represents a Fungible Token and `value` is 0.\n     * @dev Reverts if `id` represents a Fungible Token and there is an overflow of supply.\n     * @dev Reverts if `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155Received} fails or is refused.\n     * @dev Emits an {IERC721-Transfer} event from the zero address if `id` represents a Non-Fungible Token.\n     * @dev Emits an {IERC1155-TransferSingle} event from the zero address.\n     * @param to Address of the new token owner.\n     * @param id Identifier of the token to mint.\n     * @param value Amount of token to mint.\n     * @param data Optional data to send along to a receiver contract.\n     */\n    function safeMint(\n        address to,\n        uint256 id,\n        uint256 value,\n        bytes calldata data\n    ) external;\n\n    /**\n     * Safely mints a batch of tokens (ERC1155-compatible).\n     * @dev Reverts if `ids` and `values` have different lengths.\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if one of `ids` is not a token.\n     * @dev Reverts if one of `ids` represents a Non-Fungible Token and its paired value is not 1.\n     * @dev Reverts if one of `ids` represents a Non-Fungible Token which has already been minted.\n     * @dev Reverts if one of `ids` represents a Fungible Token and its paired value is 0.\n     * @dev Reverts if one of `ids` represents a Fungible Token and there is an overflow of supply.\n     * @dev Reverts if `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155batchReceived} fails or is refused.\n     * @dev Emits an {IERC721-Transfer} event from the zero address for each Non-Fungible Token minted.\n     * @dev Emits an {IERC1155-TransferBatch} event from the zero address.\n     * @param to Address of the new tokens owner.\n     * @param ids Identifiers of the tokens to mint.\n     * @param values Amounts of tokens to mint.\n     * @param data Optional data to send along to a receiver contract.\n     */\n    function safeBatchMint(\n        address to,\n        uint256[] calldata ids,\n        uint256[] calldata values,\n        bytes calldata data\n    ) external;\n\n    /**\n     * Unsafely mints a Non-Fungible Token (ERC721-compatible).\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if `nftId` does not represent a Non-Fungible Token.\n     * @dev Reverts if `nftId` has already been minted.\n     * @dev Emits an {IERC721-Transfer} event from the zero address.\n     * @dev Emits an {IERC1155-TransferSingle} event from the zero address.\n     * @dev If `to` is a contract and supports ERC1155TokenReceiver, calls {IERC1155TokenReceiver-onERC1155Received} with empty data.\n     * @param to Address of the new token owner.\n     * @param nftId Identifier of the token to mint.\n     */\n    function mint(address to, uint256 nftId) external;\n\n    /**\n     * Unsafely mints a batch of Non-Fungible Tokens (ERC721-compatible).\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if one of `nftIds` does not represent a Non-Fungible Token.\n     * @dev Reverts if one of `nftIds` has already been minted.\n     * @dev Emits an {IERC721-Transfer} event from the zero address for each of `nftIds`.\n     * @dev Emits an {IERC1155-TransferBatch} event from the zero address.\n     * @dev If `to` is a contract and supports ERC1155TokenReceiver, calls {IERC1155TokenReceiver-onERC1155BatchReceived} with empty data.\n     * @param to Address of the new token owner.\n     * @param nftIds Identifiers of the tokens to mint.\n     */\n    function batchMint(address to, uint256[] calldata nftIds) external;\n\n    /**\n     * Safely mints a token (ERC721-compatible).\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if `tokenId` has already ben minted.\n     * @dev Reverts if `to` is a contract which does not implement IERC721Receiver or IERC1155TokenReceiver.\n     * @dev Reverts if `to` is an IERC1155TokenReceiver or IERC721TokenReceiver contract which refuses the transfer.\n     * @dev Emits an {IERC721-Transfer} event from the zero address.\n     * @dev Emits an {IERC1155-TransferSingle} event from the zero address.\n     * @param to Address of the new token owner.\n     * @param nftId Identifier of the token to mint.\n     * @param data Optional data to pass along to the receiver call.\n     */\n    function safeMint(\n        address to,\n        uint256 nftId,\n        bytes calldata data\n    ) external;\n}\n"
      },
      "contracts/token/ERC1155721/interfaces/IERC1155721InventoryDeliverable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC1155 Inventory with support for ERC721, optional extension: Deliverable.\n * Provides a minting function which can be used to deliver tokens to several recipients.\n */\ninterface IERC1155721InventoryDeliverable {\n    /**\n     * Safely mints some tokens to a list of recipients.\n     * @dev Reverts if `recipients`, `ids` and `values` have different lengths.\n     * @dev Reverts if one of `recipients` is the zero address.\n     * @dev Reverts if one of `ids` is not a token.\n     * @dev Reverts if one of `ids` represents a Non-Fungible Token and its `value` is not 1.\n     * @dev Reverts if one of `ids` represents a Non-Fungible Token which has already been minted.\n     * @dev Reverts if one of `ids` represents a Fungible Token and its `value` is 0.\n     * @dev Reverts if one of `ids` represents a Fungible Token and there is an overflow of supply.\n     * @dev Reverts if one of `recipients` is a contract and the call to {IERC1155TokenReceiver-onERC1155Received} fails or is refused.\n     * @dev Emits an {IERC721-Transfer} event from the zero address for each `id` representing a Non-Fungible Token.\n     * @dev Emits an {IERC1155-TransferSingle} event from the zero address.\n     * @param recipients Addresses of the new token owners.\n     * @param ids Identifiers of the tokens to mint.\n     * @param values Amounts of tokens to mint.\n     * @param data Optional data to send along to the receiver contract(s), if any. All receivers receive the same data.\n     */\n    function safeDeliver(\n        address[] calldata recipients,\n        uint256[] calldata ids,\n        uint256[] calldata values,\n        bytes calldata data\n    ) external;\n}\n"
      },
      "contracts/token/ERC1155721/interfaces/IERC1155721InventoryBurnable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC1155 Inventory with support for ERC721, optional extension: Burnable.\n * @dev The ERC721 Burnable function `burnFrom(address,uint256)` is not provided\n *  the ERC1155 Burnable function `burnFrom(address,uint256,uint256)` can be used instead.\n * @dev Note: The ERC-165 identifier for this interface is 0x6059f1b4.\n */\ninterface IERC1155721InventoryBurnable {\n    /**\n     * Burns some token (ERC1155-compatible).\n     * @dev Reverts if the sender is not approved.\n     * @dev Reverts if `id` does not represent a token.\n     * @dev Reverts if `id` represents a Fungible Token and `value` is 0.\n     * @dev Reverts if `id` represents a Fungible Token and `value` is higher than `from`'s balance.\n     * @dev Reverts if `id` represents a Non-Fungible Token and `value` is not 1.\n     * @dev Reverts if `id` represents a Non-Fungible Token which is not owned by `from`.\n     * @dev Emits an {IERC721-Transfer} event to the zero address if `id` represents a Non-Fungible Token.\n     * @dev Emits an {IERC1155-TransferSingle} event to the zero address.\n     * @param from Address of the current token owner.\n     * @param id Identifier of the token to burn.\n     * @param value Amount of token to burn.\n     */\n    function burnFrom(\n        address from,\n        uint256 id,\n        uint256 value\n    ) external;\n\n    /**\n     * Burns multiple tokens (ERC1155-compatible).\n     * @dev Reverts if `ids` and `values` have different lengths.\n     * @dev Reverts if the sender is not approved.\n     * @dev Reverts if one of `ids` does not represent a token.\n     * @dev Reverts if one of `ids` represents a Fungible Token and `value` is 0.\n     * @dev Reverts if one of `ids` represents a Fungible Token and `value` is higher than `from`'s balance.\n     * @dev Reverts if one of `ids` represents a Non-Fungible Token and `value` is not 1.\n     * @dev Reverts if one of `ids` represents a Non-Fungible Token which is not owned by `from`.\n     * @dev Emits an {IERC721-Transfer} event to the zero address for each burnt Non-Fungible Token.\n     * @dev Emits an {IERC1155-TransferBatch} event to the zero address.\n     * @param from Address of the current tokens owner.\n     * @param ids Identifiers of the tokens to burn.\n     * @param values Amounts of tokens to burn.\n     */\n    function batchBurnFrom(\n        address from,\n        uint256[] calldata ids,\n        uint256[] calldata values\n    ) external;\n\n    /**\n     * Burns a batch of Non-Fungible Tokens (ERC721-compatible).\n     * @dev Reverts if the sender is not approved.\n     * @dev Reverts if one of `nftIds` does not represent a Non-Fungible Token.\n     * @dev Reverts if one of `nftIds` is not owned by `from`.\n     * @dev Emits an {IERC721-Transfer} event to the zero address for each of `nftIds`.\n     * @dev Emits an {IERC1155-TransferBatch} event to the zero address.\n     * @param from Current token owner.\n     * @param nftIds Identifiers of the tokens to transfer.\n     */\n    function batchBurnFrom(address from, uint256[] calldata nftIds) external;\n}\n"
      },
      "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/*\n * Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner.\n */\nabstract contract ManagedIdentity {\n    function _msgSender() internal view virtual returns (address payable) {\n        return msg.sender;\n    }\n\n    function _msgData() internal view virtual returns (bytes memory) {\n        return msg.data;\n    }\n}\n"
      },
      "@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {ManagedIdentity} from \"../metatx/ManagedIdentity.sol\";\nimport {Ownable} from \"../access/Ownable.sol\";\nimport {IWrappedERC20, ERC20Wrapper} from \"./ERC20Wrapper.sol\";\n\nabstract contract Recoverable is ManagedIdentity, Ownable {\n    using ERC20Wrapper for IWrappedERC20;\n\n    /**\n     * Extract ERC20 tokens which were accidentally sent to the contract to a list of accounts.\n     * Warning: this function should be overriden for contracts which are supposed to hold ERC20 tokens\n     * so that the extraction is limited to only amounts sent accidentally.\n     * @dev Reverts if the sender is not the contract owner.\n     * @dev Reverts if `accounts`, `tokens` and `amounts` do not have the same length.\n     * @dev Reverts if one of `tokens` is does not implement the ERC20 transfer function.\n     * @dev Reverts if one of the ERC20 transfers fail for any reason.\n     * @param accounts the list of accounts to transfer the tokens to.\n     * @param tokens the list of ERC20 token addresses.\n     * @param amounts the list of token amounts to transfer.\n     */\n    function recoverERC20s(\n        address[] calldata accounts,\n        address[] calldata tokens,\n        uint256[] calldata amounts\n    ) external virtual {\n        _requireOwnership(_msgSender());\n        uint256 length = accounts.length;\n        require(length == tokens.length && length == amounts.length, \"Recov: inconsistent arrays\");\n        for (uint256 i = 0; i != length; ++i) {\n            IWrappedERC20(tokens[i]).wrappedTransfer(accounts[i], amounts[i]);\n        }\n    }\n\n    /**\n     * Extract ERC721 tokens which were accidentally sent to the contract to a list of accounts.\n     * Warning: this function should be overriden for contracts which are supposed to hold ERC721 tokens\n     * so that the extraction is limited to only tokens sent accidentally.\n     * @dev Reverts if the sender is not the contract owner.\n     * @dev Reverts if `accounts`, `contracts` and `amounts` do not have the same length.\n     * @dev Reverts if one of `contracts` is does not implement the ERC721 transferFrom function.\n     * @dev Reverts if one of the ERC721 transfers fail for any reason.\n     * @param accounts the list of accounts to transfer the tokens to.\n     * @param contracts the list of ERC721 contract addresses.\n     * @param tokenIds the list of token ids to transfer.\n     */\n    function recoverERC721s(\n        address[] calldata accounts,\n        address[] calldata contracts,\n        uint256[] calldata tokenIds\n    ) external virtual {\n        _requireOwnership(_msgSender());\n        uint256 length = accounts.length;\n        require(length == contracts.length && length == tokenIds.length, \"Recov: inconsistent arrays\");\n        for (uint256 i = 0; i != length; ++i) {\n            IRecoverableERC721(contracts[i]).transferFrom(address(this), accounts[i], tokenIds[i]);\n        }\n    }\n}\n\ninterface IRecoverableERC721 {\n    /// See {IERC721-transferFrom(address,address,uint256)}\n    function transferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) external;\n}\n"
      },
      "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.7.0;\n\nimport \"./UsingAppendedCallData.sol\";\nimport \"./IERC2771.sol\";\nimport \"./IForwarderRegistry.sol\";\n\nabstract contract UsingUniversalForwarding is UsingAppendedCallData, IERC2771 {\n    IForwarderRegistry internal immutable _forwarderRegistry;\n    address internal immutable _universalForwarder;\n\n    constructor(IForwarderRegistry forwarderRegistry, address universalForwarder) {\n        _universalForwarder = universalForwarder;\n        _forwarderRegistry = forwarderRegistry;\n    }\n\n    function isTrustedForwarder(address forwarder) external view virtual override returns (bool) {\n        return forwarder == _universalForwarder || forwarder == address(_forwarderRegistry);\n    }\n\n    function _msgSender() internal view virtual returns (address payable) {\n        address payable msgSender = msg.sender;\n        address payable sender = _lastAppendedDataAsSender();\n        if (msgSender == address(_forwarderRegistry) || msgSender == _universalForwarder) {\n            // if forwarder use appended data\n            return sender;\n        }\n\n        // if msg.sender is neither the registry nor the universal forwarder,\n        // we have to check the last 20bytes of the call data intepreted as an address\n        // and check if the msg.sender was registered as forewarder for that address\n        // we check tx.origin to save gas in case where msg.sender == tx.origin\n        // solhint-disable-next-line avoid-tx-origin\n        if (msgSender != tx.origin && _forwarderRegistry.isForwarderFor(sender, msgSender)) {\n            return sender;\n        }\n\n        return msgSender;\n    }\n\n    function _msgData() internal view virtual returns (bytes calldata) {\n        address payable msgSender = msg.sender;\n        if (msgSender == address(_forwarderRegistry) || msgSender == _universalForwarder) {\n            // if forwarder use appended data\n            return _msgDataAssuming20BytesAppendedData();\n        }\n\n        // we check tx.origin to save gas in case where msg.sender == tx.origin\n        // solhint-disable-next-line avoid-tx-origin\n        if (msgSender != tx.origin && _forwarderRegistry.isForwarderFor(_lastAppendedDataAsSender(), msgSender)) {\n            return _msgDataAssuming20BytesAppendedData();\n        }\n        return msg.data;\n    }\n}\n"
      },
      "@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {Ownable} from \"./Ownable.sol\";\n\n/**\n * Contract which allows derived contracts access control over token minting operations.\n */\ncontract MinterRole is Ownable {\n    event MinterAdded(address indexed account);\n    event MinterRemoved(address indexed account);\n\n    mapping(address => bool) public isMinter;\n\n    /**\n     * Constructor.\n     */\n    constructor(address owner_) Ownable(owner_) {\n        _addMinter(owner_);\n    }\n\n    /**\n     * Grants the minter role to a non-minter.\n     * @dev reverts if the sender is not the contract owner.\n     * @param account The account to grant the minter role to.\n     */\n    function addMinter(address account) public {\n        _requireOwnership(_msgSender());\n        _addMinter(account);\n    }\n\n    /**\n     * Renounces the granted minter role.\n     * @dev reverts if the sender is not a minter.\n     */\n    function renounceMinter() public {\n        address account = _msgSender();\n        _requireMinter(account);\n        isMinter[account] = false;\n        emit MinterRemoved(account);\n    }\n\n    function _requireMinter(address account) internal view {\n        require(isMinter[account], \"MinterRole: not a Minter\");\n    }\n\n    function _addMinter(address account) internal {\n        isMinter[account] = true;\n        emit MinterAdded(account);\n    }\n}\n"
      },
      "contracts/token/ERC1155721/ERC1155721InventoryBurnable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {ERC1155InventoryIdentifiersLib} from \"./../ERC1155/ERC1155InventoryIdentifiersLib.sol\";\nimport {IERC165} from \"@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol\";\nimport {IERC1155721InventoryBurnable} from \"./interfaces/IERC1155721InventoryBurnable.sol\";\nimport {ERC1155721Inventory} from \"./ERC1155721Inventory.sol\";\n\n/**\n * @title ERC1155721Inventory, an ERC1155Inventory with additional support for ERC721, burnable version.\n * @dev The function `uri(uint256)` needs to be implemented by a child contract, for example with the help of `NFTBaseMetadataURI`.\n */\nabstract contract ERC1155721InventoryBurnable is IERC1155721InventoryBurnable, ERC1155721Inventory {\n    using ERC1155InventoryIdentifiersLib for uint256;\n\n    constructor(\n        string memory name_,\n        string memory symbol_,\n        uint256 collectionMaskLength\n    ) ERC1155721Inventory(name_, symbol_, collectionMaskLength) {}\n\n    //======================================================= ERC165 ========================================================//\n\n    /// @inheritdoc IERC165\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n        return interfaceId == type(IERC1155721InventoryBurnable).interfaceId || super.supportsInterface(interfaceId);\n    }\n\n    //============================================= ERC1155721InventoryBurnable =============================================//\n\n    /// @inheritdoc IERC1155721InventoryBurnable\n    function burnFrom(\n        address from,\n        uint256 id,\n        uint256 value\n    ) public virtual override {\n        address sender = _msgSender();\n        bool operatable = _isOperatable(from, sender);\n\n        if (id.isFungibleToken()) {\n            _burnFungible(from, id, value, operatable);\n        } else if (id.isNonFungibleToken(_collectionMaskLength)) {\n            _burnNFT(from, id, value, operatable, false);\n            emit Transfer(from, address(0), id);\n        } else {\n            revert(\"Inventory: not a token id\");\n        }\n\n        emit TransferSingle(sender, from, address(0), id, value);\n    }\n\n    /// @inheritdoc IERC1155721InventoryBurnable\n    function batchBurnFrom(\n        address from,\n        uint256[] memory ids,\n        uint256[] memory values\n    ) public virtual override {\n        uint256 length = ids.length;\n        require(length == values.length, \"Inventory: inconsistent arrays\");\n\n        address sender = _msgSender();\n        bool operatable = _isOperatable(from, sender);\n\n        uint256 nfCollectionId;\n        uint256 nfCollectionCount;\n        uint256 nftsCount;\n        for (uint256 i; i != length; ++i) {\n            uint256 id = ids[i];\n            if (id.isFungibleToken()) {\n                _burnFungible(from, id, values[i], operatable);\n            } else if (id.isNonFungibleToken(_collectionMaskLength)) {\n                _burnNFT(from, id, values[i], operatable, true);\n                emit Transfer(from, address(0), id);\n                uint256 nextCollectionId = id.getNonFungibleCollection(_collectionMaskLength);\n                if (nfCollectionId == 0) {\n                    nfCollectionId = nextCollectionId;\n                    nfCollectionCount = 1;\n                } else {\n                    if (nextCollectionId != nfCollectionId) {\n                        _burnNFTUpdateCollection(from, nfCollectionId, nfCollectionCount);\n                        nfCollectionId = nextCollectionId;\n                        nftsCount += nfCollectionCount;\n                        nfCollectionCount = 1;\n                    } else {\n                        ++nfCollectionCount;\n                    }\n                }\n            } else {\n                revert(\"Inventory: not a token id\");\n            }\n        }\n\n        if (nfCollectionId != 0) {\n            _burnNFTUpdateCollection(from, nfCollectionId, nfCollectionCount);\n            nftsCount += nfCollectionCount;\n            // cannot underflow as balance is verified through ownership\n            _nftBalances[from] -= nftsCount;\n        }\n\n        emit TransferBatch(sender, from, address(0), ids, values);\n    }\n\n    /// @inheritdoc IERC1155721InventoryBurnable\n    function batchBurnFrom(address from, uint256[] memory nftIds) public virtual override {\n        address sender = _msgSender();\n        bool operatable = _isOperatable(from, sender);\n\n        uint256 length = nftIds.length;\n        uint256[] memory values = new uint256[](length);\n\n        uint256 nfCollectionId;\n        uint256 nfCollectionCount;\n        for (uint256 i; i != length; ++i) {\n            uint256 nftId = nftIds[i];\n            values[i] = 1;\n            _burnNFT(from, nftId, values[i], operatable, true);\n            emit Transfer(from, address(0), nftId);\n            uint256 nextCollectionId = nftId.getNonFungibleCollection(_collectionMaskLength);\n            if (nfCollectionId == 0) {\n                nfCollectionId = nextCollectionId;\n                nfCollectionCount = 1;\n            } else {\n                if (nextCollectionId != nfCollectionId) {\n                    _burnNFTUpdateCollection(from, nfCollectionId, nfCollectionCount);\n                    nfCollectionId = nextCollectionId;\n                    nfCollectionCount = 1;\n                } else {\n                    ++nfCollectionCount;\n                }\n            }\n        }\n\n        if (nfCollectionId != 0) {\n            _burnNFTUpdateCollection(from, nfCollectionId, nfCollectionCount);\n            _nftBalances[from] -= length;\n        }\n\n        emit TransferBatch(sender, from, address(0), nftIds, values);\n    }\n\n    //============================================== Helper Internal Functions ==============================================//\n\n    function _burnFungible(\n        address from,\n        uint256 id,\n        uint256 value,\n        bool operatable\n    ) internal {\n        require(value != 0, \"Inventory: zero value\");\n        require(operatable, \"Inventory: non-approved sender\");\n        uint256 balance = _balances[id][from];\n        require(balance >= value, \"Inventory: not enough balance\");\n        _balances[id][from] = balance - value;\n        // Cannot underflow\n        _supplies[id] -= value;\n    }\n\n    function _burnNFT(\n        address from,\n        uint256 id,\n        uint256 value,\n        bool operatable,\n        bool isBatch\n    ) internal virtual {\n        require(value == 1, \"Inventory: wrong NFT value\");\n        uint256 owner = _owners[id];\n        require(from == address(uint160(owner)), \"Inventory: non-owned NFT\");\n        if (!operatable) {\n            require((owner & _APPROVAL_BIT_TOKEN_OWNER_ != 0) && _msgSender() == _nftApprovals[id], \"Inventory: non-approved sender\");\n        }\n        _owners[id] = _BURNT_NFT_OWNER;\n\n        if (!isBatch) {\n            _burnNFTUpdateCollection(from, id.getNonFungibleCollection(_collectionMaskLength), 1);\n\n            // cannot underflow as balance is verified through NFT ownership\n            --_nftBalances[from];\n        }\n    }\n\n    function _burnNFTUpdateCollection(\n        address from,\n        uint256 collectionId,\n        uint256 amount\n    ) internal virtual {\n        // cannot underflow as balance is verified through NFT ownership\n        _balances[collectionId][from] -= amount;\n        _supplies[collectionId] -= amount;\n    }\n}\n"
      },
      "contracts/metadata/NFTBaseMetadataURI.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {UInt256ToDecimalString} from \"@animoca/ethereum-contracts-core/contracts/utils/types/UInt256ToDecimalString.sol\";\nimport {ManagedIdentity} from \"@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol\";\nimport {Ownable} from \"@animoca/ethereum-contracts-core/contracts/access/Ownable.sol\";\n\nabstract contract NFTBaseMetadataURI is ManagedIdentity, Ownable {\n    using UInt256ToDecimalString for uint256;\n\n    event BaseMetadataURISet(string baseMetadataURI);\n\n    string public baseMetadataURI;\n\n    function setBaseMetadataURI(string calldata baseMetadataURI_) external {\n        _requireOwnership(_msgSender());\n        baseMetadataURI = baseMetadataURI_;\n        emit BaseMetadataURISet(baseMetadataURI_);\n    }\n\n    function _uri(uint256 id) internal view virtual returns (string memory) {\n        return string(abi.encodePacked(baseMetadataURI, id.toDecimalString()));\n    }\n}\n"
      },
      "@animoca/ethereum-contracts-core/contracts/access/Ownable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {ManagedIdentity} from \"../metatx/ManagedIdentity.sol\";\nimport {IERC173} from \"./IERC173.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is ManagedIdentity, IERC173 {\n    address internal _owner;\n\n    /**\n     * Initializes the contract, setting the deployer as the initial owner.\n     * @dev Emits an {IERC173-OwnershipTransferred(address,address)} event.\n     */\n    constructor(address owner_) {\n        _owner = owner_;\n        emit OwnershipTransferred(address(0), owner_);\n    }\n\n    /**\n     * Gets the address of the current contract owner.\n     */\n    function owner() public view virtual override returns (address) {\n        return _owner;\n    }\n\n    /**\n     * See {IERC173-transferOwnership(address)}\n     * @dev Reverts if the sender is not the current contract owner.\n     * @param newOwner the address of the new owner. Use the zero address to renounce the ownership.\n     */\n    function transferOwnership(address newOwner) public virtual override {\n        _requireOwnership(_msgSender());\n        _owner = newOwner;\n        emit OwnershipTransferred(_owner, newOwner);\n    }\n\n    /**\n     * @dev Reverts if `account` is not the contract owner.\n     * @param account the account to test.\n     */\n    function _requireOwnership(address account) internal virtual {\n        require(account == this.owner(), \"Ownable: not the owner\");\n    }\n}\n"
      },
      "@animoca/ethereum-contracts-core/contracts/utils/ERC20Wrapper.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {AddressIsContract} from \"./types/AddressIsContract.sol\";\n\n/**\n * @title ERC20Wrapper\n * Wraps ERC20 functions to support non-standard implementations which do not return a bool value.\n * Calls to the wrapped functions revert only if they throw or if they return false.\n */\nlibrary ERC20Wrapper {\n    using AddressIsContract for address;\n\n    function wrappedTransfer(\n        IWrappedERC20 token,\n        address to,\n        uint256 value\n    ) internal {\n        _callWithOptionalReturnData(token, abi.encodeWithSelector(token.transfer.selector, to, value));\n    }\n\n    function wrappedTransferFrom(\n        IWrappedERC20 token,\n        address from,\n        address to,\n        uint256 value\n    ) internal {\n        _callWithOptionalReturnData(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\n    }\n\n    function wrappedApprove(\n        IWrappedERC20 token,\n        address spender,\n        uint256 value\n    ) internal {\n        _callWithOptionalReturnData(token, abi.encodeWithSelector(token.approve.selector, spender, value));\n    }\n\n    function _callWithOptionalReturnData(IWrappedERC20 token, bytes memory callData) internal {\n        address target = address(token);\n        require(target.isContract(), \"ERC20Wrapper: non-contract\");\n\n        // solhint-disable-next-line avoid-low-level-calls\n        (bool success, bytes memory data) = target.call(callData);\n        if (success) {\n            if (data.length != 0) {\n                require(abi.decode(data, (bool)), \"ERC20Wrapper: operation failed\");\n            }\n        } else {\n            // revert using a standard revert message\n            if (data.length == 0) {\n                revert(\"ERC20Wrapper: operation failed\");\n            }\n\n            // revert using the revert message coming from the call\n            assembly {\n                let size := mload(data)\n                revert(add(32, data), size)\n            }\n        }\n    }\n}\n\ninterface IWrappedERC20 {\n    function transfer(address to, uint256 value) external returns (bool);\n\n    function transferFrom(\n        address from,\n        address to,\n        uint256 value\n    ) external returns (bool);\n\n    function approve(address spender, uint256 value) external returns (bool);\n}\n"
      },
      "@animoca/ethereum-contracts-core/contracts/access/IERC173.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC-173 Contract Ownership Standard\n * Note: the ERC-165 identifier for this interface is 0x7f5828d0\n */\ninterface IERC173 {\n    /**\n     * Event emited when ownership of a contract changes.\n     * @param previousOwner the previous owner.\n     * @param newOwner the new owner.\n     */\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n    /**\n     * Get the address of the owner\n     * @return The address of the owner.\n     */\n    function owner() external view returns (address);\n\n    /**\n     * Set the address of the new owner of the contract\n     * Set newOwner to address(0) to renounce any ownership.\n     * @dev Emits an {OwnershipTransferred} event.\n     * @param newOwner The address of the new owner of the contract. Using the zero address means renouncing ownership.\n     */\n    function transferOwnership(address newOwner) external;\n}\n"
      },
      "@animoca/ethereum-contracts-core/contracts/utils/types/AddressIsContract.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\n// Partially derived from OpenZeppelin:\n// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/406c83649bd6169fc1b578e08506d78f0873b276/contracts/utils/Address.sol\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @dev Upgrades the address type to check if it is a contract.\n */\nlibrary AddressIsContract {\n    /**\n     * @dev Returns true if `account` is a contract.\n     *\n     * [IMPORTANT]\n     * ====\n     * It is unsafe to assume that an address for which this function returns\n     * false is an externally-owned account (EOA) and not a contract.\n     *\n     * Among others, `isContract` will return false for the following\n     * types of addresses:\n     *\n     *  - an externally-owned account\n     *  - a contract in construction\n     *  - an address where a contract will be created\n     *  - an address where a contract lived, but was destroyed\n     * ====\n     */\n    function isContract(address account) internal view returns (bool) {\n        // This method relies on extcodesize, which returns 0 for contracts in\n        // construction, since the code is only stored at the end of the\n        // constructor execution.\n\n        uint256 size;\n        assembly {\n            size := extcodesize(account)\n        }\n        return size > 0;\n    }\n}\n"
      },
      "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingAppendedCallData.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.7.0;\n\nabstract contract UsingAppendedCallData {\n    function _lastAppendedDataAsSender() internal pure virtual returns (address payable sender) {\n        // Copied from openzeppelin : https://github.com/OpenZeppelin/openzeppelin-contracts/blob/9d5f77db9da0604ce0b25148898a94ae2c20d70f/contracts/metatx/ERC2771Context.sol1\n        // The assembly code is more direct than the Solidity version using `abi.decode`.\n        // solhint-disable-next-line no-inline-assembly\n        assembly {\n            sender := shr(96, calldataload(sub(calldatasize(), 20)))\n        }\n    }\n\n    function _msgDataAssuming20BytesAppendedData() internal pure virtual returns (bytes calldata) {\n        return msg.data[:msg.data.length - 20];\n    }\n}\n"
      },
      "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IERC2771.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.7.0;\n\ninterface IERC2771 {\n    function isTrustedForwarder(address forwarder) external view returns (bool);\n}\n"
      },
      "contracts/token/ERC1155/ERC1155InventoryIdentifiersLib.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC1155InventoryIdentifiersLib, a library to introspect inventory identifiers.\n * @dev With 0 < N < 256 representing the Non-Fungible Collection mask length, identifiers are represented as follow:\n * (a) a Fungible Token:\n *     - most significant bit == 0\n * (b) a Non-Fungible Collection:\n *     - most significant bit == 1\n *     - (256-N) least significant bits == 0\n * (c) a Non-Fungible Token:\n *     - most significant bit == 1\n *     - (256-N) least significant bits != 0\n */\nlibrary ERC1155InventoryIdentifiersLib {\n    // Non-Fungible bit. If an id has this bit set, it is a Non-Fungible (either Collection or Token)\n    uint256 internal constant _NF_BIT = 1 << 255;\n\n    function isFungibleToken(uint256 id) internal pure returns (bool) {\n        return id & _NF_BIT == 0;\n    }\n\n    function isNonFungibleToken(uint256 id, uint256 collectionMaskLength) internal pure returns (bool) {\n        return id & _NF_BIT != 0 && id & _getNonFungibleTokenMask(collectionMaskLength) != 0;\n    }\n\n    function getNonFungibleCollection(uint256 nftId, uint256 collectionMaskLength) internal pure returns (uint256) {\n        return nftId & ~_getNonFungibleTokenMask(collectionMaskLength);\n    }\n\n    function _getNonFungibleTokenMask(uint256 collectionMaskLength) private pure returns (uint256) {\n        return (1 << (256 - collectionMaskLength)) - 1;\n    }\n}\n"
      },
      "contracts/token/ERC1155721/ERC1155721Inventory.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {AddressIsContract} from \"@animoca/ethereum-contracts-core/contracts/utils/types/AddressIsContract.sol\";\nimport {ERC1155InventoryIdentifiersLib} from \"./../ERC1155/ERC1155InventoryIdentifiersLib.sol\";\nimport {IERC165} from \"@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol\";\nimport {IERC721} from \"./../ERC721/interfaces/IERC721.sol\";\nimport {IERC721Metadata} from \"./../ERC721/interfaces/IERC721Metadata.sol\";\nimport {IERC721BatchTransfer} from \"./../ERC721/interfaces/IERC721BatchTransfer.sol\";\nimport {IERC721Receiver} from \"./../ERC721/interfaces/IERC721Receiver.sol\";\nimport {IERC1155MetadataURI} from \"./../ERC1155/interfaces/IERC1155MetadataURI.sol\";\nimport {IERC1155TokenReceiver} from \"./../ERC1155/interfaces/IERC1155TokenReceiver.sol\";\nimport {IERC1155Inventory} from \"./../ERC1155/interfaces/IERC1155Inventory.sol\";\nimport {IERC1155721Inventory} from \"./interfaces/IERC1155721Inventory.sol\";\nimport {ERC1155InventoryBase} from \"./../ERC1155/ERC1155InventoryBase.sol\";\n\n/**\n * @title ERC1155721Inventory, an ERC1155Inventory with additional support for ERC721.\n * @dev The function `uri(uint256)` needs to be implemented by a child contract, for example with the help of `NFTBaseMetadataURI`.\n */\nabstract contract ERC1155721Inventory is IERC1155721Inventory, IERC721Metadata, ERC1155InventoryBase {\n    using ERC1155InventoryIdentifiersLib for uint256;\n    using AddressIsContract for address;\n\n    uint256 internal constant _APPROVAL_BIT_TOKEN_OWNER_ = 1 << 160;\n\n    string internal _name;\n    string internal _symbol;\n\n    /* owner => NFT balance */\n    mapping(address => uint256) internal _nftBalances;\n\n    /* NFT ID => operator */\n    mapping(uint256 => address) internal _nftApprovals;\n\n    constructor(\n        string memory name_,\n        string memory symbol_,\n        uint256 collectionMaskLength\n    ) ERC1155InventoryBase(collectionMaskLength) {\n        _name = name_;\n        _symbol = symbol_;\n    }\n\n    //======================================================= ERC165 ========================================================//\n\n    /// @inheritdoc IERC165\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n        return\n            interfaceId == type(IERC721).interfaceId ||\n            interfaceId == type(IERC721Metadata).interfaceId ||\n            interfaceId == type(IERC721BatchTransfer).interfaceId ||\n            super.supportsInterface(interfaceId);\n    }\n\n    //=================================================== ERC721Metadata ====================================================//\n\n    /// @inheritdoc IERC721Metadata\n    function name() public view virtual override returns (string memory) {\n        return _name;\n    }\n\n    /// @inheritdoc IERC721Metadata\n    function symbol() public view virtual override returns (string memory) {\n        return _symbol;\n    }\n\n    /// @inheritdoc IERC721Metadata\n    function tokenURI(uint256 nftId) external view virtual override returns (string memory) {\n        require(address(uint160(_owners[nftId])) != address(0), \"Inventory: non-existing NFT\");\n        return uri(nftId);\n    }\n\n    //================================================= ERC1155MetadataURI ==================================================//\n\n    /// @inheritdoc IERC1155MetadataURI\n    function uri(uint256) public view virtual override returns (string memory);\n\n    //======================================================= ERC721 ========================================================//\n\n    /// @inheritdoc IERC721\n    function balanceOf(address tokenOwner) external view virtual override returns (uint256) {\n        require(tokenOwner != address(0), \"Inventory: zero address\");\n        return _nftBalances[tokenOwner];\n    }\n\n    /// @inheritdoc IERC721\n    function approve(address to, uint256 tokenId) public virtual override {\n        uint256 owner = _owners[tokenId];\n        require(owner != 0, \"Inventory: non-existing NFT\");\n        address ownerAddress = address(uint160(owner));\n        require(to != ownerAddress, \"Inventory: self-approval\");\n        require(_isOperatable(ownerAddress, _msgSender()), \"Inventory: non-approved sender\");\n        if (to == address(0)) {\n            if (owner & _APPROVAL_BIT_TOKEN_OWNER_ != 0) {\n                // remove the approval bit if it is present\n                _owners[tokenId] = uint256(ownerAddress);\n            }\n        } else {\n            uint256 ownerWithApprovalBit = owner | _APPROVAL_BIT_TOKEN_OWNER_;\n            if (owner != ownerWithApprovalBit) {\n                // add the approval bit if it is not present\n                _owners[tokenId] = ownerWithApprovalBit;\n            }\n            _nftApprovals[tokenId] = to;\n        }\n        emit Approval(ownerAddress, to, tokenId);\n    }\n\n    /// @inheritdoc IERC721\n    function getApproved(uint256 tokenId) public view virtual override returns (address) {\n        uint256 owner = _owners[tokenId];\n        require(address(uint160(owner)) != address(0), \"Inventory: non-existing NFT\");\n        if (owner & _APPROVAL_BIT_TOKEN_OWNER_ != 0) {\n            return _nftApprovals[tokenId];\n        } else {\n            return address(0);\n        }\n    }\n\n    /// @inheritdoc IERC1155721Inventory\n    function transferFrom(\n        address from,\n        address to,\n        uint256 nftId\n    ) public virtual override {\n        _transferFrom(\n            from,\n            to,\n            nftId,\n            \"\",\n            /* safe */\n            false\n        );\n    }\n\n    /// @inheritdoc IERC1155721Inventory\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 nftId\n    ) public virtual override {\n        _transferFrom(\n            from,\n            to,\n            nftId,\n            \"\",\n            /* safe */\n            true\n        );\n    }\n\n    /// @inheritdoc IERC1155721Inventory\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 nftId,\n        bytes memory data\n    ) public virtual override {\n        _transferFrom(\n            from,\n            to,\n            nftId,\n            data,\n            /* safe */\n            true\n        );\n    }\n\n    /// @inheritdoc IERC1155721Inventory\n    function batchTransferFrom(\n        address from,\n        address to,\n        uint256[] memory nftIds\n    ) public virtual override {\n        require(to != address(0), \"Inventory: transfer to zero\");\n        address sender = _msgSender();\n        bool operatable = _isOperatable(from, sender);\n\n        uint256 length = nftIds.length;\n        uint256[] memory values = new uint256[](length);\n\n        uint256 nfCollectionId;\n        uint256 nfCollectionCount;\n        for (uint256 i; i != length; ++i) {\n            uint256 nftId = nftIds[i];\n            values[i] = 1;\n            _transferNFT(from, to, nftId, 1, operatable, true);\n            emit Transfer(from, to, nftId);\n            uint256 nextCollectionId = nftId.getNonFungibleCollection(_collectionMaskLength);\n            if (nfCollectionId == 0) {\n                nfCollectionId = nextCollectionId;\n                nfCollectionCount = 1;\n            } else {\n                if (nextCollectionId != nfCollectionId) {\n                    _transferNFTUpdateCollection(from, to, nfCollectionId, nfCollectionCount);\n                    nfCollectionId = nextCollectionId;\n                    nfCollectionCount = 1;\n                } else {\n                    ++nfCollectionCount;\n                }\n            }\n        }\n\n        if (nfCollectionId != 0) {\n            _transferNFTUpdateCollection(from, to, nfCollectionId, nfCollectionCount);\n            _transferNFTUpdateBalances(from, to, length);\n        }\n\n        emit TransferBatch(_msgSender(), from, to, nftIds, values);\n        if (to.isContract() && _isERC1155TokenReceiver(to)) {\n            _callOnERC1155BatchReceived(from, to, nftIds, values, \"\");\n        }\n    }\n\n    //======================================================= ERC1155 =======================================================//\n\n    /// @inheritdoc IERC1155721Inventory\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 id,\n        uint256 value,\n        bytes memory data\n    ) public virtual override(IERC1155Inventory, IERC1155721Inventory) {\n        address sender = _msgSender();\n        require(to != address(0), \"Inventory: transfer to zero\");\n        bool operatable = _isOperatable(from, sender);\n\n        if (id.isFungibleToken()) {\n            _transferFungible(from, to, id, value, operatable);\n        } else if (id.isNonFungibleToken(_collectionMaskLength)) {\n            _transferNFT(from, to, id, value, operatable, false);\n            emit Transfer(from, to, id);\n        } else {\n            revert(\"Inventory: not a token id\");\n        }\n\n        emit TransferSingle(sender, from, to, id, value);\n        if (to.isContract()) {\n            _callOnERC1155Received(from, to, id, value, data);\n        }\n    }\n\n    /// @inheritdoc IERC1155721Inventory\n    function safeBatchTransferFrom(\n        address from,\n        address to,\n        uint256[] memory ids,\n        uint256[] memory values,\n        bytes memory data\n    ) public virtual override(IERC1155Inventory, IERC1155721Inventory) {\n        _safeBatchTransferFrom(from, to, ids, values, data);\n    }\n\n    //================================================== ERC721 && ERC1155 ==================================================//\n\n    /// @inheritdoc IERC1155721Inventory\n    function setApprovalForAll(address operator, bool approved) public virtual override(IERC1155721Inventory, ERC1155InventoryBase) {\n        super.setApprovalForAll(operator, approved);\n    }\n\n    /// @inheritdoc IERC1155721Inventory\n    function isApprovedForAll(address tokenOwner, address operator)\n        public\n        view\n        virtual\n        override(IERC1155721Inventory, ERC1155InventoryBase)\n        returns (bool)\n    {\n        return super.isApprovedForAll(tokenOwner, operator);\n    }\n\n    //============================================== ERC721 && ERC1155Inventory ===============================================//\n\n    /// @inheritdoc IERC1155721Inventory\n    function ownerOf(uint256 nftId) public view virtual override(IERC1155721Inventory, ERC1155InventoryBase) returns (address) {\n        return super.ownerOf(nftId);\n    }\n\n    //============================================ High-level Internal Functions ============================================//\n\n    /**\n     * Safely or unsafely transfers some token (ERC721-compatible).\n     * @dev For `safe` transfer, see {IERC1155721Inventory-transferFrom(address,address,uint256)}.\n     * @dev For un`safe` transfer, see {IERC1155721Inventory-safeTransferFrom(address,address,uint256,bytes)}.\n     */\n    function _transferFrom(\n        address from,\n        address to,\n        uint256 nftId,\n        bytes memory data,\n        bool safe\n    ) internal {\n        require(to != address(0), \"Inventory: transfer to zero\");\n        address sender = _msgSender();\n        bool operatable = _isOperatable(from, sender);\n\n        _transferNFT(from, to, nftId, 1, operatable, false);\n\n        emit Transfer(from, to, nftId);\n        emit TransferSingle(sender, from, to, nftId, 1);\n        if (to.isContract()) {\n            if (_isERC1155TokenReceiver(to)) {\n                _callOnERC1155Received(from, to, nftId, 1, data);\n            } else if (safe) {\n                _callOnERC721Received(from, to, nftId, data);\n            }\n        }\n    }\n\n    /**\n     * Safely transfers a batch of tokens (ERC1155-compatible).\n     * @dev See {IERC1155721Inventory-safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)}.\n     */\n    function _safeBatchTransferFrom(\n        address from,\n        address to,\n        uint256[] memory ids,\n        uint256[] memory values,\n        bytes memory data\n    ) internal {\n        require(to != address(0), \"Inventory: transfer to zero\");\n        uint256 length = ids.length;\n        require(length == values.length, \"Inventory: inconsistent arrays\");\n        address sender = _msgSender();\n        bool operatable = _isOperatable(from, sender);\n\n        uint256 nfCollectionId;\n        uint256 nfCollectionCount;\n        uint256 nftsCount;\n        for (uint256 i; i != length; ++i) {\n            uint256 id = ids[i];\n            if (id.isFungibleToken()) {\n                _transferFungible(from, to, id, values[i], operatable);\n            } else if (id.isNonFungibleToken(_collectionMaskLength)) {\n                _transferNFT(from, to, id, values[i], operatable, true);\n                emit Transfer(from, to, id);\n                uint256 nextCollectionId = id.getNonFungibleCollection(_collectionMaskLength);\n                if (nfCollectionId == 0) {\n                    nfCollectionId = nextCollectionId;\n                    nfCollectionCount = 1;\n                } else {\n                    if (nextCollectionId != nfCollectionId) {\n                        _transferNFTUpdateCollection(from, to, nfCollectionId, nfCollectionCount);\n                        nfCollectionId = nextCollectionId;\n                        nftsCount += nfCollectionCount;\n                        nfCollectionCount = 1;\n                    } else {\n                        ++nfCollectionCount;\n                    }\n                }\n            } else {\n                revert(\"Inventory: not a token id\");\n            }\n        }\n\n        if (nfCollectionId != 0) {\n            _transferNFTUpdateCollection(from, to, nfCollectionId, nfCollectionCount);\n            nftsCount += nfCollectionCount;\n            _transferNFTUpdateBalances(from, to, nftsCount);\n        }\n\n        emit TransferBatch(_msgSender(), from, to, ids, values);\n        if (to.isContract()) {\n            _callOnERC1155BatchReceived(from, to, ids, values, data);\n        }\n    }\n\n    /**\n     * Safely or unsafely mints some token (ERC721-compatible).\n     * @dev For `safe` mint, see {IERC1155721InventoryMintable-mint(address,uint256)}.\n     * @dev For un`safe` mint, see {IERC1155721InventoryMintable-safeMint(address,uint256,bytes)}.\n     */\n    function _mint(\n        address to,\n        uint256 nftId,\n        bytes memory data,\n        bool safe\n    ) internal {\n        require(to != address(0), \"Inventory: mint to zero\");\n        require(nftId.isNonFungibleToken(_collectionMaskLength), \"Inventory: not an NFT\");\n\n        _mintNFT(to, nftId, 1, false);\n\n        emit Transfer(address(0), to, nftId);\n        emit TransferSingle(_msgSender(), address(0), to, nftId, 1);\n        if (to.isContract()) {\n            if (_isERC1155TokenReceiver(to)) {\n                _callOnERC1155Received(address(0), to, nftId, 1, data);\n            } else if (safe) {\n                _callOnERC721Received(address(0), to, nftId, data);\n            }\n        }\n    }\n\n    /**\n     * Unsafely mints a batch of Non-Fungible Tokens (ERC721-compatible).\n     * @dev See {IERC1155721InventoryMintable-batchMint(address,uint256[])}.\n     */\n    function _batchMint(address to, uint256[] memory nftIds) internal {\n        require(to != address(0), \"Inventory: mint to zero\");\n\n        uint256 length = nftIds.length;\n        uint256[] memory values = new uint256[](length);\n\n        uint256 nfCollectionId;\n        uint256 nfCollectionCount;\n        for (uint256 i; i != length; ++i) {\n            uint256 nftId = nftIds[i];\n            require(nftId.isNonFungibleToken(_collectionMaskLength), \"Inventory: not an NFT\");\n            values[i] = 1;\n            _mintNFT(to, nftId, 1, true);\n            emit Transfer(address(0), to, nftId);\n            uint256 nextCollectionId = nftId.getNonFungibleCollection(_collectionMaskLength);\n            if (nfCollectionId == 0) {\n                nfCollectionId = nextCollectionId;\n                nfCollectionCount = 1;\n            } else {\n                if (nextCollectionId != nfCollectionId) {\n                    _balances[nfCollectionId][to] += nfCollectionCount;\n                    _supplies[nfCollectionId] += nfCollectionCount;\n                    nfCollectionId = nextCollectionId;\n                    nfCollectionCount = 1;\n                } else {\n                    ++nfCollectionCount;\n                }\n            }\n        }\n\n        _balances[nfCollectionId][to] += nfCollectionCount;\n        _supplies[nfCollectionId] += nfCollectionCount;\n        _nftBalances[to] += length;\n\n        emit TransferBatch(_msgSender(), address(0), to, nftIds, values);\n        if (to.isContract() && _isERC1155TokenReceiver(to)) {\n            _callOnERC1155BatchReceived(address(0), to, nftIds, values, \"\");\n        }\n    }\n\n    /**\n     * Safely mints some token (ERC1155-compatible).\n     * @dev See {IERC1155721InventoryMintable-safeMint(address,uint256,uint256,bytes)}.\n     */\n    function _safeMint(\n        address to,\n        uint256 id,\n        uint256 value,\n        bytes memory data\n    ) internal virtual {\n        require(to != address(0), \"Inventory: mint to zero\");\n        address sender = _msgSender();\n        if (id.isFungibleToken()) {\n            _mintFungible(to, id, value);\n        } else if (id.isNonFungibleToken(_collectionMaskLength)) {\n            _mintNFT(to, id, value, false);\n            emit Transfer(address(0), to, id);\n        } else {\n            revert(\"Inventory: not a token id\");\n        }\n\n        emit TransferSingle(sender, address(0), to, id, value);\n        if (to.isContract()) {\n            _callOnERC1155Received(address(0), to, id, value, data);\n        }\n    }\n\n    /**\n     * Safely mints a batch of tokens (ERC1155-compatible).\n     * @dev See {IERC1155721InventoryMintable-safeBatchMint(address,uint256[],uint256[],bytes)}.\n     */\n    function _safeBatchMint(\n        address to,\n        uint256[] memory ids,\n        uint256[] memory values,\n        bytes memory data\n    ) internal virtual {\n        require(to != address(0), \"Inventory: mint to zero\");\n        uint256 length = ids.length;\n        require(length == values.length, \"Inventory: inconsistent arrays\");\n\n        uint256 nfCollectionId;\n        uint256 nfCollectionCount;\n        uint256 nftsCount;\n        for (uint256 i; i != length; ++i) {\n            uint256 id = ids[i];\n            uint256 value = values[i];\n            if (id.isFungibleToken()) {\n                _mintFungible(to, id, value);\n            } else if (id.isNonFungibleToken(_collectionMaskLength)) {\n                _mintNFT(to, id, value, true);\n                emit Transfer(address(0), to, id);\n                uint256 nextCollectionId = id.getNonFungibleCollection(_collectionMaskLength);\n                if (nfCollectionId == 0) {\n                    nfCollectionId = nextCollectionId;\n                    nfCollectionCount = 1;\n                } else {\n                    if (nextCollectionId != nfCollectionId) {\n                        _balances[nfCollectionId][to] += nfCollectionCount;\n                        _supplies[nfCollectionId] += nfCollectionCount;\n                        nfCollectionId = nextCollectionId;\n                        nftsCount += nfCollectionCount;\n                        nfCollectionCount = 1;\n                    } else {\n                        ++nfCollectionCount;\n                    }\n                }\n            } else {\n                revert(\"Inventory: not a token id\");\n            }\n        }\n\n        if (nfCollectionId != 0) {\n            _balances[nfCollectionId][to] += nfCollectionCount;\n            _supplies[nfCollectionId] += nfCollectionCount;\n            nftsCount += nfCollectionCount;\n            _nftBalances[to] += nftsCount;\n        }\n\n        emit TransferBatch(_msgSender(), address(0), to, ids, values);\n        if (to.isContract()) {\n            _callOnERC1155BatchReceived(address(0), to, ids, values, data);\n        }\n    }\n\n    /**\n     * Safely mints some tokens to a list of recipients.\n     * @dev See {IERC1155721Deliverable-safeDeliver(address[],uint256[],uint256[],bytes)}.\n     */\n    function _safeDeliver(\n        address[] calldata recipients,\n        uint256[] calldata ids,\n        uint256[] calldata values,\n        bytes calldata data\n    ) internal {\n        uint256 length = recipients.length;\n        require(length == ids.length && length == values.length, \"Inventory: inconsistent arrays\");\n\n        address sender = _msgSender();\n        for (uint256 i; i != length; ++i) {\n            address to = recipients[i];\n            require(to != address(0), \"Inventory: mint to zero\");\n            uint256 id = ids[i];\n            uint256 value = values[i];\n            if (id.isFungibleToken()) {\n                _mintFungible(to, id, value);\n                emit TransferSingle(sender, address(0), to, id, value);\n                if (to.isContract()) {\n                    _callOnERC1155Received(address(0), to, id, value, data);\n                }\n            } else if (id.isNonFungibleToken(_collectionMaskLength)) {\n                _mintNFT(to, id, value, false);\n                emit Transfer(address(0), to, id);\n                emit TransferSingle(sender, address(0), to, id, 1);\n                if (to.isContract()) {\n                    if (_isERC1155TokenReceiver(to)) {\n                        _callOnERC1155Received(address(0), to, id, 1, data);\n                    } else {\n                        _callOnERC721Received(address(0), to, id, data);\n                    }\n                }\n            } else {\n                revert(\"Inventory: not a token id\");\n            }\n        }\n    }\n\n    //============================================== Helper Internal Functions ==============================================//\n\n    function _mintFungible(\n        address to,\n        uint256 id,\n        uint256 value\n    ) internal {\n        require(value != 0, \"Inventory: zero value\");\n        uint256 supply = _supplies[id];\n        uint256 newSupply = supply + value;\n        require(newSupply > supply, \"Inventory: supply overflow\");\n        _supplies[id] = newSupply;\n        // cannot overflow as supply cannot overflow\n        _balances[id][to] += value;\n    }\n\n    function _mintNFT(\n        address to,\n        uint256 id,\n        uint256 value,\n        bool isBatch\n    ) internal {\n        require(value == 1, \"Inventory: wrong NFT value\");\n        require(_owners[id] == 0, \"Inventory: existing/burnt NFT\");\n\n        _owners[id] = uint256(uint160(to));\n\n        if (!isBatch) {\n            uint256 collectionId = id.getNonFungibleCollection(_collectionMaskLength);\n            // it is virtually impossible that a Non-Fungible Collection supply\n            // overflows due to the cost of minting individual tokens\n            ++_supplies[collectionId];\n            ++_balances[collectionId][to];\n            ++_nftBalances[to];\n        }\n    }\n\n    function _transferFungible(\n        address from,\n        address to,\n        uint256 id,\n        uint256 value,\n        bool operatable\n    ) internal {\n        require(operatable, \"Inventory: non-approved sender\");\n        require(value != 0, \"Inventory: zero value\");\n        uint256 balance = _balances[id][from];\n        require(balance >= value, \"Inventory: not enough balance\");\n        if (from != to) {\n            _balances[id][from] = balance - value;\n            // cannot overflow as supply cannot overflow\n            _balances[id][to] += value;\n        }\n    }\n\n    function _transferNFT(\n        address from,\n        address to,\n        uint256 id,\n        uint256 value,\n        bool operatable,\n        bool isBatch\n    ) internal virtual {\n        require(value == 1, \"Inventory: wrong NFT value\");\n        uint256 owner = _owners[id];\n        require(from == address(uint160(owner)), \"Inventory: non-owned NFT\");\n        if (!operatable) {\n            require((owner & _APPROVAL_BIT_TOKEN_OWNER_ != 0) && _msgSender() == _nftApprovals[id], \"Inventory: non-approved sender\");\n        }\n        _owners[id] = uint256(uint160(to));\n        if (!isBatch) {\n            _transferNFTUpdateBalances(from, to, 1);\n            _transferNFTUpdateCollection(from, to, id.getNonFungibleCollection(_collectionMaskLength), 1);\n        }\n    }\n\n    function _transferNFTUpdateBalances(\n        address from,\n        address to,\n        uint256 amount\n    ) internal virtual {\n        if (from != to) {\n            // cannot underflow as balance is verified through ownership\n            _nftBalances[from] -= amount;\n            //  cannot overflow as supply cannot overflow\n            _nftBalances[to] += amount;\n        }\n    }\n\n    function _transferNFTUpdateCollection(\n        address from,\n        address to,\n        uint256 collectionId,\n        uint256 amount\n    ) internal virtual {\n        if (from != to) {\n            // cannot underflow as balance is verified through ownership\n            _balances[collectionId][from] -= amount;\n            // cannot overflow as supply cannot overflow\n            _balances[collectionId][to] += amount;\n        }\n    }\n\n    /**\n     * Queries whether a contract implements ERC1155TokenReceiver.\n     * @param _contract address of the contract.\n     * @return wheter the given contract implements ERC1155TokenReceiver.\n     */\n    function _isERC1155TokenReceiver(address _contract) internal view returns (bool) {\n        bool success;\n        bool result;\n        bytes memory staticCallData = abi.encodeWithSelector(type(IERC165).interfaceId, type(IERC1155TokenReceiver).interfaceId);\n        assembly {\n            let call_ptr := add(0x20, staticCallData)\n            let call_size := mload(staticCallData)\n            let output := mload(0x40) // Find empty storage location using \"free memory pointer\"\n            mstore(output, 0x0)\n            success := staticcall(10000, _contract, call_ptr, call_size, output, 0x20) // 32 bytes\n            result := mload(output)\n        }\n        // (10000 / 63) \"not enough for supportsInterface(...)\" // consume all gas, so caller can potentially know that there was not enough gas\n        assert(gasleft() > 158);\n        return success && result;\n    }\n\n    /**\n     * Calls {IERC721Receiver-onERC721Received} on a target contract.\n     * @dev Reverts if `to` is not a contract.\n     * @dev Reverts if the call to the target fails or is refused.\n     * @param from Previous token owner.\n     * @param to New token owner.\n     * @param nftId Identifier of the token transferred.\n     * @param data Optional data to send along with the receiver contract call.\n     */\n    function _callOnERC721Received(\n        address from,\n        address to,\n        uint256 nftId,\n        bytes memory data\n    ) internal {\n        require(\n            IERC721Receiver(to).onERC721Received(_msgSender(), from, nftId, data) == type(IERC721Receiver).interfaceId,\n            \"Inventory: transfer refused\"\n        );\n    }\n}\n"
      },
      "contracts/token/ERC721/interfaces/IERC721.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC721 Non-Fungible Token Standard, basic interface (functions).\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n * @dev This interface only contains the standard functions. See IERC721Events for the events.\n * @dev Note: The ERC-165 identifier for this interface is 0x80ac58cd.\n */\ninterface IERC721 {\n    /**\n     * Gets the balance of the specified address\n     * @param owner address to query the balance of\n     * @return balance uint256 representing the amount owned by the passed address\n     */\n    function balanceOf(address owner) external view returns (uint256 balance);\n\n    /**\n     * Gets the owner of the specified ID\n     * @param tokenId uint256 ID to query the owner of\n     * @return owner address currently marked as the owner of the given ID\n     */\n    function ownerOf(uint256 tokenId) external view returns (address owner);\n\n    /**\n     * Approves another address to transfer the given token ID\n     * @dev The zero address indicates there is no approved address.\n     * @dev There can only be one approved address per token at a given time.\n     * @dev Can only be called by the token owner or an approved operator.\n     * @param to address to be approved for the given token ID\n     * @param tokenId uint256 ID of the token to be approved\n     */\n    function approve(address to, uint256 tokenId) external;\n\n    /**\n     * Gets the approved address for a token ID, or zero if no address set\n     * @dev Reverts if the token ID does not exist.\n     * @param tokenId uint256 ID of the token to query the approval of\n     * @return operator address currently approved for the given token ID\n     */\n    function getApproved(uint256 tokenId) external view returns (address operator);\n\n    /**\n     * Sets or unsets the approval of a given operator\n     * @dev An operator is allowed to transfer all tokens of the sender on their behalf\n     * @param operator operator address to set the approval\n     * @param approved representing the status of the approval to be set\n     */\n    function setApprovalForAll(address operator, bool approved) external;\n\n    /**\n     * Tells whether an operator is approved by a given owner\n     * @param owner owner address which you want to query the approval of\n     * @param operator operator address which you want to query the approval of\n     * @return bool whether the given operator is approved by the given owner\n     */\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\n\n    /**\n     * Transfers the ownership of a given token ID to another address\n     * @dev Usage of this method is discouraged, use `safeTransferFrom` whenever possible\n     * @dev Requires the msg sender to be the owner, approved, or operator\n     * @param from current owner of the token\n     * @param to address to receive the ownership of the given token ID\n     * @param tokenId uint256 ID of the token to be transferred\n     */\n    function transferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) external;\n\n    /**\n     * Safely transfers the ownership of a given token ID to another address\n     *\n     * If the target address is a contract, it must implement `onERC721Received`,\n     * which is called upon a safe transfer, and return the magic value\n     * `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise,\n     * the transfer is reverted.\n     *\n     * @dev Requires the msg sender to be the owner, approved, or operator\n     * @param from current owner of the token\n     * @param to address to receive the ownership of the given token ID\n     * @param tokenId uint256 ID of the token to be transferred\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) external;\n\n    /**\n     * Safely transfers the ownership of a given token ID to another address\n     *\n     * If the target address is a contract, it must implement `onERC721Received`,\n     * which is called upon a safe transfer, and return the magic value\n     * `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise,\n     * the transfer is reverted.\n     *\n     * @dev Requires the msg sender to be the owner, approved, or operator\n     * @param from current owner of the token\n     * @param to address to receive the ownership of the given token ID\n     * @param tokenId uint256 ID of the token to be transferred\n     * @param data bytes data to send along with a safe transfer check\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes calldata data\n    ) external;\n}\n"
      },
      "contracts/token/ERC721/interfaces/IERC721Metadata.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC721 Non-Fungible Token Standard, optional extension: Metadata.\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n * @dev Note: The ERC-165 identifier for this interface is 0x5b5e139f.\n */\ninterface IERC721Metadata {\n    /**\n     * @dev Gets the token name\n     * @return string representing the token name\n     */\n    function name() external view returns (string memory);\n\n    /**\n     * @dev Gets the token symbol\n     * @return string representing the token symbol\n     */\n    function symbol() external view returns (string memory);\n\n    /**\n     * @dev Returns an URI for a given token ID\n     * Throws if the token ID does not exist. May return an empty string.\n     * @param tokenId uint256 ID of the token to query\n     * @return string URI of given token ID\n     */\n    function tokenURI(uint256 tokenId) external view returns (string memory);\n}\n"
      },
      "contracts/token/ERC721/interfaces/IERC721BatchTransfer.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC721 Non-Fungible Token Standard, optional extension: Batch Transfer.\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n * @dev Note: The ERC-165 identifier for this interface is 0xf3993d11.\n */\ninterface IERC721BatchTransfer {\n    /**\n     * Unsafely transfers a batch of tokens.\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if the sender is not approved.\n     * @dev Reverts if one of `tokenIds` is not owned by `from`.\n     * @dev Resets the token approval for each of `tokenIds`.\n     * @dev Emits an {IERC721-Transfer} event for each of `tokenIds`.\n     * @param from Current tokens owner.\n     * @param to Address of the new token owner.\n     * @param tokenIds Identifiers of the tokens to transfer.\n     */\n    function batchTransferFrom(\n        address from,\n        address to,\n        uint256[] calldata tokenIds\n    ) external;\n}\n"
      },
      "contracts/token/ERC721/interfaces/IERC721Receiver.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC721 Non-Fungible Token Standard, Tokens Receiver.\n * Interface for any contract that wants to support safeTransfers from ERC721 asset contracts.\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n * @dev Note: The ERC-165 identifier for this interface is 0x150b7a02.\n */\ninterface IERC721Receiver {\n    /**\n     * Handles the receipt of an NFT.\n     * @dev The ERC721 smart contract calls this function on the recipient\n     *  after a {IERC721-safeTransferFrom}. This function MUST return the function selector,\n     *  otherwise the caller will revert the transaction. The selector to be\n     *  returned can be obtained as `this.onERC721Received.selector`. This\n     *  function MAY throw to revert and reject the transfer.\n     * @dev Note: the ERC721 contract address is always the message sender.\n     * @param operator The address which called `safeTransferFrom` function\n     * @param from The address which previously owned the token\n     * @param tokenId The NFT identifier which is being transferred\n     * @param data Additional data with no specified format\n     * @return bytes4 `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`\n     */\n    function onERC721Received(\n        address operator,\n        address from,\n        uint256 tokenId,\n        bytes calldata data\n    ) external returns (bytes4);\n}\n"
      },
      "contracts/token/ERC1155/interfaces/IERC1155TokenReceiver.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC1155 Multi Token Standard, Tokens Receiver.\n * Interface for any contract that wants to support transfers from ERC1155 asset contracts.\n * @dev See https://eips.ethereum.org/EIPS/eip-1155\n * @dev Note: The ERC-165 identifier for this interface is 0x4e2312e0.\n */\ninterface IERC1155TokenReceiver {\n    /**\n     * @notice Handle the receipt of a single ERC1155 token type.\n     * An ERC1155 contract MUST call this function on a recipient contract, at the end of a `safeTransferFrom` after the balance update.\n     * This function MUST return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n     *  (i.e. 0xf23a6e61) to accept the transfer.\n     * Return of any other value than the prescribed keccak256 generated value MUST result in the transaction being reverted by the caller.\n     * @param operator  The address which initiated the transfer (i.e. msg.sender)\n     * @param from      The address which previously owned the token\n     * @param id        The ID of the token being transferred\n     * @param value     The amount of tokens being transferred\n     * @param data      Additional data with no specified format\n     * @return bytes4   `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n     */\n    function onERC1155Received(\n        address operator,\n        address from,\n        uint256 id,\n        uint256 value,\n        bytes calldata data\n    ) external returns (bytes4);\n\n    /**\n     * @notice Handle the receipt of multiple ERC1155 token types.\n     * An ERC1155 contract MUST call this function on a recipient contract, at the end of a `safeBatchTransferFrom` after the balance updates.\n     * This function MUST return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n     *  (i.e. 0xbc197c81) if to accept the transfer(s).\n     * Return of any other value than the prescribed keccak256 generated value MUST result in the transaction being reverted by the caller.\n     * @param operator  The address which initiated the batch transfer (i.e. msg.sender)\n     * @param from      The address which previously owned the token\n     * @param ids       An array containing ids of each token being transferred (order and length must match _values array)\n     * @param values    An array containing amounts of each token being transferred (order and length must match _ids array)\n     * @param data      Additional data with no specified format\n     * @return          `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n     */\n    function onERC1155BatchReceived(\n        address operator,\n        address from,\n        uint256[] calldata ids,\n        uint256[] calldata values,\n        bytes calldata data\n    ) external returns (bytes4);\n}\n"
      },
      "contracts/token/ERC1155/interfaces/IERC1155Inventory.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {IERC1155} from \"./IERC1155.sol\";\nimport {IERC1155InventoryFunctions} from \"./IERC1155InventoryFunctions.sol\";\n\n/**\n * @title ERC1155 Multi Token Standard, optional extension: Inventory.\n * Interface for Fungible/Non-Fungible Tokens management on an ERC1155 contract.\n *\n * This interface rationalizes the co-existence of Fungible and Non-Fungible Tokens\n * within the same contract. As several kinds of Fungible Tokens can be managed under\n * the Multi-Token standard, we consider that Non-Fungible Tokens can be classified\n * under their own specific type. We introduce the concept of Non-Fungible Collection\n * and consider the usage of 3 types of identifiers:\n * (a) Fungible Token identifiers, each representing a set of Fungible Tokens,\n * (b) Non-Fungible Collection identifiers, each representing a set of Non-Fungible Tokens (this is not a token),\n * (c) Non-Fungible Token identifiers.\n *\n * Identifiers nature\n * |       Type                | isFungible  | isCollection | isToken |\n * |  Fungible Token           |   true      |     true     |  true   |\n * |  Non-Fungible Collection  |   false     |     true     |  false  |\n * |  Non-Fungible Token       |   false     |     false    |  true   |\n *\n * Identifiers compatibilities\n * |       Type                |  transfer  |   balance    |   supply    |  owner  |\n * |  Fungible Token           |    OK      |     OK       |     OK      |   NOK   |\n * |  Non-Fungible Collection  |    NOK     |     OK       |     OK      |   NOK   |\n * |  Non-Fungible Token       |    OK      |   0 or 1     |   0 or 1    |   OK    |\n *\n * @dev See https://eips.ethereum.org/EIPS/eip-xxxx\n * @dev Note: The ERC-165 identifier for this interface is 0x09ce5c46.\n */\ninterface IERC1155Inventory is IERC1155, IERC1155InventoryFunctions {\n    //================================================== ERC1155Inventory ===================================================//\n    /**\n     * Optional event emitted when a collection (Fungible Token or Non-Fungible Collection) is created.\n     *  This event can be used by a client application to determine which identifiers are meaningful\n     *  to track through the functions `balanceOf`, `balanceOfBatch` and `totalSupply`.\n     * @dev This event MUST NOT be emitted twice for the same `collectionId`.\n     */\n    event CollectionCreated(uint256 indexed collectionId, bool indexed fungible);\n\n    /**\n     * Retrieves the owner of a Non-Fungible Token (ERC721-compatible).\n     * @dev Reverts if `nftId` is owned by the zero address.\n     * @param nftId Identifier of the token to query.\n     * @return Address of the current owner of the token.\n     */\n    function ownerOf(uint256 nftId) external view override returns (address);\n\n    /**\n     * Introspects whether or not `id` represents a Fungible Token.\n     *  This function MUST return true even for a Fungible Token which is not-yet created.\n     * @param id The identifier to query.\n     * @return bool True if `id` represents aFungible Token, false otherwise.\n     */\n    function isFungible(uint256 id) external view override returns (bool);\n\n    /**\n     * Introspects the Non-Fungible Collection to which `nftId` belongs.\n     * @dev This function MUST return a value representing a Non-Fungible Collection.\n     * @dev This function MUST return a value for a non-existing token, and SHOULD NOT be used to check the existence of a Non-Fungible Token.\n     * @dev Reverts if `nftId` does not represent a Non-Fungible Token.\n     * @param nftId The token identifier to query the collection of.\n     * @return The Non-Fungible Collection identifier to which `nftId` belongs.\n     */\n    function collectionOf(uint256 nftId) external view override returns (uint256);\n\n    //======================================================= ERC1155 =======================================================//\n\n    /**\n     * Retrieves the balance of `id` owned by account `owner`.\n     * @param owner The account to retrieve the balance of.\n     * @param id The identifier to retrieve the balance of.\n     * @return\n     *  If `id` represents a collection (Fungible Token or Non-Fungible Collection), the balance for this collection.\n     *  If `id` represents a Non-Fungible Token, 1 if the token is owned by `owner`, else 0.\n     */\n    function balanceOf(address owner, uint256 id) external view override returns (uint256);\n\n    /**\n     * Retrieves the balances of `ids` owned by accounts `owners`.\n     * @dev Reverts if `owners` and `ids` have different lengths.\n     * @param owners The accounts to retrieve the balances of.\n     * @param ids The identifiers to retrieve the balances of.\n     * @return An array of elements such as for each pair `id`/`owner`:\n     *  If `id` represents a collection (Fungible Token or Non-Fungible Collection), the balance for this collection.\n     *  If `id` represents a Non-Fungible Token, 1 if the token is owned by `owner`, else 0.\n     */\n    function balanceOfBatch(address[] calldata owners, uint256[] calldata ids) external view override returns (uint256[] memory);\n\n    /**\n     * Safely transfers some token.\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if the sender is not approved.\n     * @dev Reverts if `id` does not represent a token.\n     * @dev Reverts if `id` represents a Non-Fungible Token and `value` is not 1.\n     * @dev Reverts if `id` represents a Non-Fungible Token and is not owned by `from`.\n     * @dev Reverts if `id` represents a Fungible Token and `value` is 0.\n     * @dev Reverts if `id` represents a Fungible Token and `from` has an insufficient balance.\n     * @dev Reverts if `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155received} fails or is refused.\n     * @dev Emits an {IERC1155-TransferSingle} event.\n     * @param from Current token owner.\n     * @param to Address of the new token owner.\n     * @param id Identifier of the token to transfer.\n     * @param value Amount of token to transfer.\n     * @param data Optional data to pass to the receiver contract.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 id,\n        uint256 value,\n        bytes calldata data\n    ) external override;\n\n    /**\n     * @notice this documentation overrides its {IERC1155-safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)}.\n     * Safely transfers a batch of tokens.\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if the sender is not approved.\n     * @dev Reverts if one of `ids` does not represent a token.\n     * @dev Reverts if one of `ids` represents a Non-Fungible Token and `value` is not 1.\n     * @dev Reverts if one of `ids` represents a Non-Fungible Token and is not owned by `from`.\n     * @dev Reverts if one of `ids` represents a Fungible Token and `value` is 0.\n     * @dev Reverts if one of `ids` represents a Fungible Token and `from` has an insufficient balance.\n     * @dev Reverts if one of `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155batchReceived} fails or is refused.\n     * @dev Emits an {IERC1155-TransferBatch} event.\n     * @param from Current tokens owner.\n     * @param to Address of the new tokens owner.\n     * @param ids Identifiers of the tokens to transfer.\n     * @param values Amounts of tokens to transfer.\n     * @param data Optional data to pass to the receiver contract.\n     */\n    function safeBatchTransferFrom(\n        address from,\n        address to,\n        uint256[] calldata ids,\n        uint256[] calldata values,\n        bytes calldata data\n    ) external override;\n}\n"
      },
      "contracts/token/ERC1155721/interfaces/IERC1155721Inventory.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {IERC1155} from \"./../../ERC1155/interfaces/IERC1155.sol\";\nimport {IERC1155Inventory} from \"./../../ERC1155/interfaces/IERC1155Inventory.sol\";\nimport {IERC721} from \"./../../ERC721/interfaces/IERC721.sol\";\nimport {IERC721BatchTransfer} from \"./../../ERC721/interfaces/IERC721BatchTransfer.sol\";\n\n/**\n * @title ERC1155 Inventory with support for ERC721 and EC721BatchTransfer.\n */\ninterface IERC1155721Inventory is IERC1155Inventory, IERC721, IERC721BatchTransfer {\n    //======================================================= ERC721 ========================================================//\n\n    event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);\n\n    event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);\n\n    /**\n     * Unsafely transfers a Non-Fungible Token.\n     * @dev Usage of this method is discouraged, use `safeTransferFrom` whenever possible\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if the sender is not approved.\n     * @dev Reverts if `nftId` is not owned by `from`.\n     * @dev Reverts if `to` is an IERC1155TokenReceiver contract which refuses the receiver call.\n     * @dev Resets the ERC721 single token approval.\n     * @dev Emits an {IERC721-Transfer} event.\n     * @dev Emits an {IERC1155-TransferSingle} event.\n     * @param from Current token owner.\n     * @param to Address of the new token owner.\n     * @param nftId Identifier of the token to transfer.\n     */\n    function transferFrom(\n        address from,\n        address to,\n        uint256 nftId\n    ) external override;\n\n    /**\n     * Safely transfers a Non-Fungible Token.\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if the sender is not approved.\n     * @dev Reverts if `nftId` is not owned by `from`.\n     * @dev Reverts if `to` is a contract which does not implement IERC1155TokenReceiver or IERC721Receiver.\n     * @dev Reverts if `to` is an IERC1155TokenReceiver or IERC721Receiver contract which refuses the transfer.\n     * @dev Resets the ERC721 single token approval.\n     * @dev Emits an {IERC721-Transfer} event.\n     * @dev Emits an {IERC1155-TransferSingle} event.\n     * @param from Current token owner.\n     * @param to Address of the new token owner.\n     * @param nftId Identifier of the token to transfer.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 nftId\n    ) external override;\n\n    /**\n     * Safely transfers a Non-Fungible Token.\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if the sender is not approved.\n     * @dev Reverts if `nftId` is not owned by `from`.\n     * @dev Reverts if `to` is a contract which does not implement IERC1155TokenReceiver or IERC721Receiver.\n     * @dev Reverts if `to` is an IERC1155TokenReceiver or IERC721Receiver contract which refuses the transfer.\n     * @dev Resets the ERC721 single token approval.\n     * @dev Emits an {IERC721-Transfer} event.\n     * @dev Emits an {IERC1155-TransferSingle} event.\n     * @param from Current token owner.\n     * @param to Address of the new token owner.\n     * @param nftId Identifier of the token to transfer.\n     * @param data Optional data to pass to the receiver contract.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 nftId,\n        bytes calldata data\n    ) external override;\n\n    //================================================= ERC721BatchTransfer =================================================//\n\n    /**\n     * Unsafely transfers a batch of Non-Fungible Tokens.\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if the sender is not approved.\n     * @dev Reverts if one of `nftIds` is not owned by `from`.\n     * @dev Reverts if `to` is an IERC1155TokenReceiver which refuses the transfer.\n     * @dev Resets the token approval for each of `nftIds`.\n     * @dev Emits an {IERC721-Transfer} event for each of `nftIds`.\n     * @dev Emits an {IERC1155-TransferBatch} event.\n     * @param from Current tokens owner.\n     * @param to Address of the new tokens owner.\n     * @param nftIds Identifiers of the tokens to transfer.\n     */\n    function batchTransferFrom(\n        address from,\n        address to,\n        uint256[] calldata nftIds\n    ) external override;\n\n    //======================================================= ERC1155 =======================================================//\n\n    /**\n     * Safely transfers some token.\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if the sender is not approved.\n     * @dev Reverts if `id` does not represent a token.\n     * @dev Reverts if `id` represents a Non-Fungible Token and `value` is not 1.\n     * @dev Reverts if `id` represents a Non-Fungible Token and is not owned by `from`.\n     * @dev Reverts if `id` represents a Fungible Token and `value` is 0.\n     * @dev Reverts if `id` represents a Fungible Token and `from` has an insufficient balance.\n     * @dev Reverts if `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155received} fails or is refused.\n     * @dev Resets the ERC721 single token approval if `id` represents a Non-Fungible Token.\n     * @dev Emits an {IERC721-Transfer} event if `id` represents a Non-Fungible Token.\n     * @dev Emits an {IERC1155-TransferSingle} event.\n     * @param from Current token owner.\n     * @param to Address of the new token owner.\n     * @param id Identifier of the token to transfer.\n     * @param value Amount of token to transfer.\n     * @param data Optional data to pass to the receiver contract.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 id,\n        uint256 value,\n        bytes calldata data\n    ) external override;\n\n    /**\n     * Safely transfers a batch of tokens.\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if the sender is not approved.\n     * @dev Reverts if one of `ids` does not represent a token.\n     * @dev Reverts if one of `ids` represents a Non-Fungible Token and `value` is not 1.\n     * @dev Reverts if one of `ids` represents a Non-Fungible Token and is not owned by `from`.\n     * @dev Reverts if one of `ids` represents a Fungible Token and `value` is 0.\n     * @dev Reverts if one of `ids` represents a Fungible Token and `from` has an insufficient balance.\n     * @dev Reverts if one of `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155batchReceived} fails or is refused.\n     * @dev Resets the ERC721 single token approval for each transferred Non-Fungible Token.\n     * @dev Emits an {IERC721-Transfer} event for each transferred Non-Fungible Token.\n     * @dev Emits an {IERC1155-TransferBatch} event.\n     * @param from Current tokens owner.\n     * @param to Address of the new tokens owner.\n     * @param ids Identifiers of the tokens to transfer.\n     * @param values Amounts of tokens to transfer.\n     * @param data Optional data to pass to the receiver contract.\n     */\n    function safeBatchTransferFrom(\n        address from,\n        address to,\n        uint256[] calldata ids,\n        uint256[] calldata values,\n        bytes calldata data\n    ) external override;\n\n    //================================================== ERC721 && ERC1155 ==================================================//\n\n    /// @inheritdoc IERC1155\n    function setApprovalForAll(address operator, bool approved) external override(IERC1155, IERC721);\n\n    /// @inheritdoc IERC1155\n    function isApprovedForAll(address owner, address operator) external view override(IERC1155, IERC721) returns (bool);\n\n    //============================================= ERC721 && ERC1155Inventory ==============================================//\n\n    /// @inheritdoc IERC1155Inventory\n    function ownerOf(uint256 nftId) external view override(IERC1155Inventory, IERC721) returns (address);\n}\n"
      },
      "contracts/token/ERC1155/ERC1155InventoryBase.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {ERC1155InventoryIdentifiersLib} from \"./ERC1155InventoryIdentifiersLib.sol\";\nimport {IERC165} from \"@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol\";\nimport {IERC1155} from \"./interfaces/IERC1155.sol\";\nimport {IERC1155InventoryFunctions} from \"./interfaces/IERC1155InventoryFunctions.sol\";\nimport {IERC1155Inventory} from \"./interfaces/IERC1155Inventory.sol\";\nimport {IERC1155MetadataURI} from \"./interfaces/IERC1155MetadataURI.sol\";\nimport {IERC1155InventoryTotalSupply} from \"./interfaces/IERC1155InventoryTotalSupply.sol\";\nimport {IERC1155TokenReceiver} from \"./interfaces/IERC1155TokenReceiver.sol\";\nimport {ManagedIdentity} from \"@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol\";\n\n/**\n * @title ERC1155 Inventory Base.\n * @dev The functions `safeTransferFrom(address,address,uint256,uint256,bytes)`\n *  and `safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)` need to be implemented by a child contract.\n * @dev The function `uri(uint256)` needs to be implemented by a child contract, for example with the help of `NFTBaseMetadataURI`.\n */\nabstract contract ERC1155InventoryBase is ManagedIdentity, IERC165, IERC1155Inventory, IERC1155MetadataURI, IERC1155InventoryTotalSupply {\n    using ERC1155InventoryIdentifiersLib for uint256;\n\n    uint256 internal immutable _collectionMaskLength;\n\n    // bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))\n    bytes4 internal constant _ERC1155_RECEIVED = 0xf23a6e61;\n\n    // bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))\n    bytes4 internal constant _ERC1155_BATCH_RECEIVED = 0xbc197c81;\n\n    // Burnt Non-Fungible Token owner's magic value\n    uint256 internal constant _BURNT_NFT_OWNER = 0xdead000000000000000000000000000000000000000000000000000000000000;\n\n    /* owner => operator => approved */\n    mapping(address => mapping(address => bool)) internal _operators;\n\n    /* collection ID => owner => balance */\n    mapping(uint256 => mapping(address => uint256)) internal _balances;\n\n    /* collection ID => supply */\n    mapping(uint256 => uint256) internal _supplies;\n\n    /* NFT ID => owner */\n    mapping(uint256 => uint256) internal _owners;\n\n    /* collection ID => creator */\n    mapping(uint256 => address) internal _creators;\n\n    constructor(uint256 collectionMaskLength) {\n        require(collectionMaskLength != 0 && collectionMaskLength < 256, \"Inventory: wrong mask length\");\n        _collectionMaskLength = collectionMaskLength;\n    }\n\n    //======================================================= ERC165 ========================================================//\n\n    /// @inheritdoc IERC165\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n        return\n            interfaceId == type(IERC165).interfaceId ||\n            interfaceId == type(IERC1155).interfaceId ||\n            interfaceId == type(IERC1155MetadataURI).interfaceId ||\n            interfaceId == type(IERC1155InventoryFunctions).interfaceId ||\n            interfaceId == type(IERC1155InventoryTotalSupply).interfaceId;\n    }\n\n    //======================================================= ERC1155 =======================================================//\n\n    /// @inheritdoc IERC1155Inventory\n    function balanceOf(address owner, uint256 id) public view virtual override returns (uint256) {\n        require(owner != address(0), \"Inventory: zero address\");\n\n        if (id.isNonFungibleToken(_collectionMaskLength)) {\n            return address(uint160(_owners[id])) == owner ? 1 : 0;\n        }\n\n        return _balances[id][owner];\n    }\n\n    /// @inheritdoc IERC1155Inventory\n    function balanceOfBatch(address[] calldata owners, uint256[] calldata ids) external view virtual override returns (uint256[] memory) {\n        require(owners.length == ids.length, \"Inventory: inconsistent arrays\");\n\n        uint256[] memory balances = new uint256[](owners.length);\n\n        for (uint256 i = 0; i != owners.length; ++i) {\n            balances[i] = balanceOf(owners[i], ids[i]);\n        }\n\n        return balances;\n    }\n\n    /// @inheritdoc IERC1155\n    function setApprovalForAll(address operator, bool approved) public virtual override {\n        address sender = _msgSender();\n        require(operator != sender, \"Inventory: self-approval\");\n        _operators[sender][operator] = approved;\n        emit ApprovalForAll(sender, operator, approved);\n    }\n\n    /// @inheritdoc IERC1155\n    function isApprovedForAll(address tokenOwner, address operator) public view virtual override returns (bool) {\n        return _operators[tokenOwner][operator];\n    }\n\n    //================================================== ERC1155Inventory ===================================================//\n\n    /// @inheritdoc IERC1155Inventory\n    function isFungible(uint256 id) external pure virtual override returns (bool) {\n        return id.isFungibleToken();\n    }\n\n    /// @inheritdoc IERC1155Inventory\n    function collectionOf(uint256 nftId) external view virtual override returns (uint256) {\n        require(nftId.isNonFungibleToken(_collectionMaskLength), \"Inventory: not an NFT\");\n        return nftId.getNonFungibleCollection(_collectionMaskLength);\n    }\n\n    /// @inheritdoc IERC1155Inventory\n    function ownerOf(uint256 nftId) public view virtual override returns (address) {\n        address owner = address(uint160(_owners[nftId]));\n        require(owner != address(0), \"Inventory: non-existing NFT\");\n        return owner;\n    }\n\n    //============================================= ERC1155InventoryTotalSupply =============================================//\n\n    /// @inheritdoc IERC1155InventoryTotalSupply\n    function totalSupply(uint256 id) external view virtual override returns (uint256) {\n        if (id.isNonFungibleToken(_collectionMaskLength)) {\n            return address(uint160(_owners[id])) == address(0) ? 0 : 1;\n        } else {\n            return _supplies[id];\n        }\n    }\n\n    //============================================ High-level Internal Functions ============================================//\n\n    /**\n     * Creates a collection (optional).\n     * @dev Reverts if `collectionId` does not represent a collection.\n     * @dev Reverts if `collectionId` has already been created.\n     * @dev Emits a {IERC1155Inventory-CollectionCreated} event.\n     * @param collectionId Identifier of the collection.\n     */\n    function _createCollection(uint256 collectionId) internal virtual {\n        require(!collectionId.isNonFungibleToken(_collectionMaskLength), \"Inventory: not a collection\");\n        require(_creators[collectionId] == address(0), \"Inventory: existing collection\");\n        _creators[collectionId] = _msgSender();\n        emit CollectionCreated(collectionId, collectionId.isFungibleToken());\n    }\n\n    function _creator(uint256 collectionId) internal view virtual returns (address) {\n        require(!collectionId.isNonFungibleToken(_collectionMaskLength), \"Inventory: not a collection\");\n        return _creators[collectionId];\n    }\n\n    //============================================== Helper Internal Functions ==============================================//\n\n    /**\n     * Returns whether `sender` is authorised to make a transfer on behalf of `from`.\n     * @param from The address to check operatibility upon.\n     * @param sender The sender address.\n     * @return True if sender is `from` or an operator for `from`, false otherwise.\n     */\n    function _isOperatable(address from, address sender) internal view virtual returns (bool) {\n        return (from == sender) || _operators[from][sender];\n    }\n\n    /**\n     * Calls {IERC1155TokenReceiver-onERC1155Received} on a target contract.\n     * @dev Reverts if `to` is not a contract.\n     * @dev Reverts if the call to the target fails or is refused.\n     * @param from Previous token owner.\n     * @param to New token owner.\n     * @param id Identifier of the token transferred.\n     * @param value Amount of token transferred.\n     * @param data Optional data to send along with the receiver contract call.\n     */\n    function _callOnERC1155Received(\n        address from,\n        address to,\n        uint256 id,\n        uint256 value,\n        bytes memory data\n    ) internal {\n        require(IERC1155TokenReceiver(to).onERC1155Received(_msgSender(), from, id, value, data) == _ERC1155_RECEIVED, \"Inventory: transfer refused\");\n    }\n\n    /**\n     * Calls {IERC1155TokenReceiver-onERC1155batchReceived} on a target contract.\n     * @dev Reverts if `to` is not a contract.\n     * @dev Reverts if the call to the target fails or is refused.\n     * @param from Previous tokens owner.\n     * @param to New tokens owner.\n     * @param ids Identifiers of the tokens to transfer.\n     * @param values Amounts of tokens to transfer.\n     * @param data Optional data to send along with the receiver contract call.\n     */\n    function _callOnERC1155BatchReceived(\n        address from,\n        address to,\n        uint256[] memory ids,\n        uint256[] memory values,\n        bytes memory data\n    ) internal {\n        require(\n            IERC1155TokenReceiver(to).onERC1155BatchReceived(_msgSender(), from, ids, values, data) == _ERC1155_BATCH_RECEIVED,\n            \"Inventory: transfer refused\"\n        );\n    }\n}\n"
      },
      "contracts/token/ERC1155/interfaces/IERC1155.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC1155 Multi Token Standard, basic interface.\n * @dev See https://eips.ethereum.org/EIPS/eip-1155\n * @dev Note: The ERC-165 identifier for this interface is 0xd9b67a26.\n */\ninterface IERC1155 {\n    event TransferSingle(address indexed _operator, address indexed _from, address indexed _to, uint256 _id, uint256 _value);\n\n    event TransferBatch(address indexed _operator, address indexed _from, address indexed _to, uint256[] _ids, uint256[] _values);\n\n    event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);\n\n    event URI(string _value, uint256 indexed _id);\n\n    /**\n     * Safely transfers some token.\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if the sender is not approved.\n     * @dev Reverts if `from` has an insufficient balance.\n     * @dev Reverts if `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155received} fails or is refused.\n     * @dev Emits a `TransferSingle` event.\n     * @param from Current token owner.\n     * @param to Address of the new token owner.\n     * @param id Identifier of the token to transfer.\n     * @param value Amount of token to transfer.\n     * @param data Optional data to send along to a receiver contract.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 id,\n        uint256 value,\n        bytes calldata data\n    ) external;\n\n    /**\n     * Safely transfers a batch of tokens.\n     * @dev Reverts if `to` is the zero address.\n     * @dev Reverts if `ids` and `values` have different lengths.\n     * @dev Reverts if the sender is not approved.\n     * @dev Reverts if `from` has an insufficient balance for any of `ids`.\n     * @dev Reverts if `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155batchReceived} fails or is refused.\n     * @dev Emits a `TransferBatch` event.\n     * @param from Current token owner.\n     * @param to Address of the new token owner.\n     * @param ids Identifiers of the tokens to transfer.\n     * @param values Amounts of tokens to transfer.\n     * @param data Optional data to send along to a receiver contract.\n     */\n    function safeBatchTransferFrom(\n        address from,\n        address to,\n        uint256[] calldata ids,\n        uint256[] calldata values,\n        bytes calldata data\n    ) external;\n\n    /**\n     * Retrieves the balance of `id` owned by account `owner`.\n     * @param owner The account to retrieve the balance of.\n     * @param id The identifier to retrieve the balance of.\n     * @return The balance of `id` owned by account `owner`.\n     */\n    function balanceOf(address owner, uint256 id) external view returns (uint256);\n\n    /**\n     * Retrieves the balances of `ids` owned by accounts `owners`. For each pair:\n     * @dev Reverts if `owners` and `ids` have different lengths.\n     * @param owners The addresses of the token holders\n     * @param ids The identifiers to retrieve the balance of.\n     * @return The balances of `ids` owned by accounts `owners`.\n     */\n    function balanceOfBatch(address[] calldata owners, uint256[] calldata ids) external view returns (uint256[] memory);\n\n    /**\n     * Enables or disables an operator's approval.\n     * @dev Emits an `ApprovalForAll` event.\n     * @param operator Address of the operator.\n     * @param approved True to approve the operator, false to revoke an approval.\n     */\n    function setApprovalForAll(address operator, bool approved) external;\n\n    /**\n     * Retrieves the approval status of an operator for a given owner.\n     * @param owner Address of the authorisation giver.\n     * @param operator Address of the operator.\n     * @return True if the operator is approved, false if not.\n     */\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\n}\n"
      },
      "contracts/token/ERC1155/interfaces/IERC1155InventoryFunctions.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC1155 Multi Token Standard, optional extension: Inventory.\n * Interface for Fungible/Non-Fungible Tokens management on an ERC1155 contract.\n * @dev See https://eips.ethereum.org/EIPS/eip-xxxx\n * @dev Note: The ERC-165 identifier for this interface is 0x09ce5c46.\n */\ninterface IERC1155InventoryFunctions {\n    function ownerOf(uint256 nftId) external view returns (address);\n\n    function isFungible(uint256 id) external view returns (bool);\n\n    function collectionOf(uint256 nftId) external view returns (uint256);\n}\n"
      },
      "contracts/token/ERC1155/interfaces/IERC1155InventoryTotalSupply.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\n/**\n * @title ERC1155 Inventory, optional extension: Total Supply.\n * @dev See https://eips.ethereum.org/EIPS/eip-xxxx\n * @dev Note: The ERC-165 identifier for this interface is 0xbd85b039.\n */\ninterface IERC1155InventoryTotalSupply {\n    /**\n     * Retrieves the total supply of `id`.\n     * @param id The identifier for which to retrieve the supply of.\n     * @return\n     *  If `id` represents a collection (Fungible Token or Non-Fungible Collection), the total supply for this collection.\n     *  If `id` represents a Non-Fungible Token, 1 if the token exists, else 0.\n     */\n    function totalSupply(uint256 id) external view returns (uint256);\n}\n"
      },
      "@animoca/ethereum-contracts-core/contracts/utils/types/UInt256ToDecimalString.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\n// Partially derived from OpenZeppelin:\n// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/8b10cb38d8fedf34f2d89b0ed604f2dceb76d6a9/contracts/utils/Strings.sol\n\npragma solidity >=0.7.6 <0.8.0;\n\nlibrary UInt256ToDecimalString {\n    function toDecimalString(uint256 value) internal pure returns (string memory) {\n        if (value == 0) {\n            return \"0\";\n        }\n        uint256 temp = value;\n        uint256 digits;\n        while (temp != 0) {\n            digits++;\n            temp /= 10;\n        }\n        bytes memory buffer = new bytes(digits);\n        uint256 index = digits - 1;\n        temp = value;\n        while (temp != 0) {\n            buffer[index--] = bytes1(uint8(48 + (temp % 10)));\n            temp /= 10;\n        }\n        return string(buffer);\n    }\n}\n"
      }
    },
    "settings": {
      "optimizer": {
        "enabled": true,
        "runs": 750
      },
      "outputSelection": {
        "*": {
          "*": [
            "abi",
            "evm.bytecode",
            "evm.deployedBytecode",
            "evm.methodIdentifiers"
          ],
          "": [
            "ast"
          ]
        }
      }
    }
  },
  "output": {
    "contracts": {
      "@animoca/ethereum-contracts-core/contracts/access/IERC173.sol": {
        "IERC173": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "owner()": "8da5cb5b",
              "transferOwnership(address)": "f2fde38b"
            }
          }
        }
      },
      "@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol": {
        "MinterRole": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner_",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "MinterAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "MinterRemoved",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "addMinter",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "isMinter",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceMinter",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506040516104d43803806104d48339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b03831690811782556040518392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506100878161008d565b506100dc565b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b6103e9806100eb6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063986502751161005057806398650275146100b8578063aa271e1a146100c0578063f2fde38b146100fa57610067565b80638da5cb5b1461006c578063983b2d5614610090575b600080fd5b610074610120565b604080516001600160a01b039092168252519081900360200190f35b6100b6600480360360208110156100a657600080fd5b50356001600160a01b031661012f565b005b6100b661014b565b6100e6600480360360208110156100d657600080fd5b50356001600160a01b03166101a9565b604080519115158252519081900360200190f35b6100b66004803603602081101561011057600080fd5b50356001600160a01b03166101be565b6000546001600160a01b031690565b61013f61013a61022f565b610233565b610148816102f7565b50565b600061015561022f565b905061016081610346565b6001600160a01b038116600081815260016020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a250565b60016020526000908152604090205460ff1681565b6101c961013a61022f565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b3390565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561026c57600080fd5b505afa158015610280573d6000803e3d6000fd5b505050506040513d602081101561029657600080fd5b50516001600160a01b03828116911614610148576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b6001600160a01b03811660009081526001602052604090205460ff16610148576040805162461bcd60e51b815260206004820152601860248201527f4d696e746572526f6c653a206e6f742061204d696e7465720000000000000000604482015290519081900360640190fdfea2646970667358221220f0130e3ce9a9799036489849872d2551504206de0f78c674216a4428d4ec552464736f6c63430007060033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x4D4 CODESIZE SUB DUP1 PUSH2 0x4D4 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD DUP4 SWAP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x87 DUP2 PUSH2 0x8D JUMP JUMPDEST POP PUSH2 0xDC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x3E9 DUP1 PUSH2 0xEB PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x98650275 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x98650275 EQ PUSH2 0xB8 JUMPI DUP1 PUSH4 0xAA271E1A EQ PUSH2 0xC0 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xFA JUMPI PUSH2 0x67 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x983B2D56 EQ PUSH2 0x90 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x74 PUSH2 0x120 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x12F JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB6 PUSH2 0x14B JUMP JUMPDEST PUSH2 0xE6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1A9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x110 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1BE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x13F PUSH2 0x13A PUSH2 0x22F JUMP JUMPDEST PUSH2 0x233 JUMP JUMPDEST PUSH2 0x148 DUP2 PUSH2 0x2F7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x155 PUSH2 0x22F JUMP JUMPDEST SWAP1 POP PUSH2 0x160 DUP2 PUSH2 0x346 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xE94479A9F7E1952CC78F2D6BAAB678ADC1B772D936C6583DEF489E524CB66692 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x1C9 PUSH2 0x13A PUSH2 0x22F JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 DUP3 OR DUP1 DUP5 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 SWAP2 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x280 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x296 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x148 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6F7420746865206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x148 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D696E746572526F6C653A206E6F742061204D696E7465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CREATE SGT 0xE EXTCODECOPY 0xE9 0xA9 PUSH26 0x9036489849872D2551504206DE0F78C674216A4428D4EC552464 PUSH20 0x6F6C634300070600330000000000000000000000 ",
              "sourceMap": "203:1173:1:-:0;;;422:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;422:79:1;960:6:2;:15;;-1:-1:-1;;;;;;960:15:2;-1:-1:-1;;;;;960:15:2;;;;;;;990:40;;422:79:1;;960:6:2;990:40;;960:6;;990:40;-1:-1:-1;476:18:1::1;487:6:::0;476:10:::1;:18::i;:::-;422:79:::0;203:1173;;1252:122;-1:-1:-1;;;;;1308:17:1;;;;;;1328:4;1308:17;;;;;;;;:24;;-1:-1:-1;;1308:24:1;;;;;;;1347:20;;;1308:17;1347:20;1252:122;:::o;203:1173::-;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100675760003560e01c8063986502751161005057806398650275146100b8578063aa271e1a146100c0578063f2fde38b146100fa57610067565b80638da5cb5b1461006c578063983b2d5614610090575b600080fd5b610074610120565b604080516001600160a01b039092168252519081900360200190f35b6100b6600480360360208110156100a657600080fd5b50356001600160a01b031661012f565b005b6100b661014b565b6100e6600480360360208110156100d657600080fd5b50356001600160a01b03166101a9565b604080519115158252519081900360200190f35b6100b66004803603602081101561011057600080fd5b50356001600160a01b03166101be565b6000546001600160a01b031690565b61013f61013a61022f565b610233565b610148816102f7565b50565b600061015561022f565b905061016081610346565b6001600160a01b038116600081815260016020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a250565b60016020526000908152604090205460ff1681565b6101c961013a61022f565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b3390565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561026c57600080fd5b505afa158015610280573d6000803e3d6000fd5b505050506040513d602081101561029657600080fd5b50516001600160a01b03828116911614610148576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b6001600160a01b03811660009081526001602052604090205460ff16610148576040805162461bcd60e51b815260206004820152601860248201527f4d696e746572526f6c653a206e6f742061204d696e7465720000000000000000604482015290519081900360640190fdfea2646970667358221220f0130e3ce9a9799036489849872d2551504206de0f78c674216a4428d4ec552464736f6c63430007060033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x98650275 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x98650275 EQ PUSH2 0xB8 JUMPI DUP1 PUSH4 0xAA271E1A EQ PUSH2 0xC0 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xFA JUMPI PUSH2 0x67 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x983B2D56 EQ PUSH2 0x90 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x74 PUSH2 0x120 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x12F JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB6 PUSH2 0x14B JUMP JUMPDEST PUSH2 0xE6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1A9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x110 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1BE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x13F PUSH2 0x13A PUSH2 0x22F JUMP JUMPDEST PUSH2 0x233 JUMP JUMPDEST PUSH2 0x148 DUP2 PUSH2 0x2F7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x155 PUSH2 0x22F JUMP JUMPDEST SWAP1 POP PUSH2 0x160 DUP2 PUSH2 0x346 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xE94479A9F7E1952CC78F2D6BAAB678ADC1B772D936C6583DEF489E524CB66692 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x1C9 PUSH2 0x13A PUSH2 0x22F JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 DUP3 OR DUP1 DUP5 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 SWAP2 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x280 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x296 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x148 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6F7420746865206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x148 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D696E746572526F6C653A206E6F742061204D696E7465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CREATE SGT 0xE EXTCODECOPY 0xE9 0xA9 PUSH26 0x9036489849872D2551504206DE0F78C674216A4428D4EC552464 PUSH20 0x6F6C634300070600330000000000000000000000 ",
              "sourceMap": "203:1173:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1114:94:2;;;:::i;:::-;;;;-1:-1:-1;;;;;1114:94:2;;;;;;;;;;;;;;694:120:1;;;;;;;;;;;;;;;;-1:-1:-1;694:120:1;-1:-1:-1;;;;;694:120:1;;:::i;:::-;;929:185;;;:::i;339:40::-;;;;;;;;;;;;;;;;-1:-1:-1;339:40:1;-1:-1:-1;;;;;339:40:1;;:::i;:::-;;;;;;;;;;;;;;;;;;1448:197:2;;;;;;;;;;;;;;;;-1:-1:-1;1448:197:2;-1:-1:-1;;;;;1448:197:2;;:::i;1114:94::-;1169:7;1195:6;-1:-1:-1;;;;;1195:6:2;1114:94;:::o;694:120:1:-;747:31;765:12;:10;:12::i;:::-;747:17;:31::i;:::-;788:19;799:7;788:10;:19::i;:::-;694:120;:::o;929:185::-;972:15;990:12;:10;:12::i;:::-;972:30;;1012:23;1027:7;1012:14;:23::i;:::-;-1:-1:-1;;;;;1045:17:1;;1065:5;1045:17;;;:8;:17;;;;;;:25;;-1:-1:-1;;1045:25:1;;;1085:22;;;1065:5;1085:22;929:185;:::o;339:40::-;;;;;;;;;;;;;;;:::o;1448:197:2:-;1527:31;1545:12;:10;:12::i;1527:31::-;1568:6;:17;;;;-1:-1:-1;;;;;1568:17:2;;;;;;;;;1600:38;;1568:17;;1621:6;;;1600:38;;1568:6;1600:38;1448:197;:::o;355:104:4:-;442:10;355:104;:::o;1770:136:2:-;1860:4;-1:-1:-1;;;;;1860:10:2;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1860:12:2;-1:-1:-1;;;;;1849:23:2;;;;;;1841:58;;;;;-1:-1:-1;;;1841:58:2;;;;;;;;;;;;;;;;;;;;;;;;;;;1252:122:1;-1:-1:-1;;;;;1308:17:1;;;;;;1328:4;1308:17;;;;;;;;:24;;-1:-1:-1;;1308:24:1;;;;;;;1347:20;;;1308:17;1347:20;1252:122;:::o;1120:126::-;-1:-1:-1;;;;;1193:17:1;;;;;;:8;:17;;;;;;;;1185:54;;;;;-1:-1:-1;;;1185:54:1;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "methodIdentifiers": {
              "addMinter(address)": "983b2d56",
              "isMinter(address)": "aa271e1a",
              "owner()": "8da5cb5b",
              "renounceMinter()": "98650275",
              "transferOwnership(address)": "f2fde38b"
            }
          }
        }
      },
      "@animoca/ethereum-contracts-core/contracts/access/Ownable.sol": {
        "Ownable": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "owner()": "8da5cb5b",
              "transferOwnership(address)": "f2fde38b"
            }
          }
        }
      },
      "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol": {
        "IERC165": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          }
        }
      },
      "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol": {
        "ManagedIdentity": {
          "abi": [],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {}
          }
        }
      },
      "@animoca/ethereum-contracts-core/contracts/utils/ERC20Wrapper.sol": {
        "ERC20Wrapper": {
          "abi": [],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d6b31b3ffb4e59cf7c10edcfa173074f87d0e8d78a325f548d0a4f63f88728ce64736f6c63430007060033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD6 0xB3 SHL EXTCODEHASH 0xFB 0x4E MSIZE 0xCF PUSH29 0x10EDCFA173074F87D0E8D78A325F548D0A4F63F88728CE64736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "347:1672:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d6b31b3ffb4e59cf7c10edcfa173074f87d0e8d78a325f548d0a4f63f88728ce64736f6c63430007060033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD6 0xB3 SHL EXTCODEHASH 0xFB 0x4E MSIZE 0xCF PUSH29 0x10EDCFA173074F87D0E8D78A325F548D0A4F63F88728CE64736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "347:1672:5:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          }
        },
        "IWrappedERC20": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "approve(address,uint256)": "095ea7b3",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          }
        }
      },
      "@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol": {
        "IRecoverableERC721": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          }
        },
        "Recoverable": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "tokens",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "recoverERC20s",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "contracts",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "tokenIds",
                  "type": "uint256[]"
                }
              ],
              "name": "recoverERC721s",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "owner()": "8da5cb5b",
              "recoverERC20s(address[],address[],uint256[])": "73c8a958",
              "recoverERC721s(address[],address[],uint256[])": "c3666c36",
              "transferOwnership(address)": "f2fde38b"
            }
          }
        }
      },
      "@animoca/ethereum-contracts-core/contracts/utils/types/AddressIsContract.sol": {
        "AddressIsContract": {
          "abi": [],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220facd02160f77f3368a08cad1d2eb65089b103fa667d1bfa3c90895e8b191f93d64736f6c63430007060033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 STATICCALL 0xCD MUL AND 0xF PUSH24 0xF3368A08CAD1D2EB65089B103FA667D1BFA3C90895E8B191 0xF9 RETURNDATASIZE PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "311:981:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220facd02160f77f3368a08cad1d2eb65089b103fa667d1bfa3c90895e8b191f93d64736f6c63430007060033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 STATICCALL 0xCD MUL AND 0xF PUSH24 0xF3368A08CAD1D2EB65089B103FA667D1BFA3C90895E8B191 0xF9 RETURNDATASIZE PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "311:981:7:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "@animoca/ethereum-contracts-core/contracts/utils/types/UInt256ToDecimalString.sol": {
        "UInt256ToDecimalString": {
          "abi": [],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b8aa3eff185405b0d6ecb62ec4a8071b5c00c85f14cf53143ad52b14f5f6f87664736f6c63430007060033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB8 0xAA RETURNDATACOPY SELFDESTRUCT XOR SLOAD SDIV 0xB0 0xD6 0xEC 0xB6 0x2E 0xC4 0xA8 SMOD SHL 0x5C STOP 0xC8 0x5F EQ 0xCF MSTORE8 EQ GASPRICE 0xD5 0x2B EQ CREATE2 0xF6 0xF8 PUSH23 0x64736F6C63430007060033000000000000000000000000 ",
              "sourceMap": "239:585:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b8aa3eff185405b0d6ecb62ec4a8071b5c00c85f14cf53143ad52b14f5f6f87664736f6c63430007060033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB8 0xAA RETURNDATACOPY SELFDESTRUCT XOR SLOAD SDIV 0xB0 0xD6 0xEC 0xB6 0x2E 0xC4 0xA8 SMOD SHL 0x5C STOP 0xC8 0x5F EQ 0xCF MSTORE8 EQ GASPRICE 0xD5 0x2B EQ CREATE2 0xF6 0xF8 PUSH23 0x64736F6C63430007060033000000000000000000000000 ",
              "sourceMap": "239:585:8:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "contracts/metadata/NFTBaseMetadataURI.sol": {
        "NFTBaseMetadataURI": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "baseMetadataURI",
                  "type": "string"
                }
              ],
              "name": "BaseMetadataURISet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "baseMetadataURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "baseMetadataURI_",
                  "type": "string"
                }
              ],
              "name": "setBaseMetadataURI",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "baseMetadataURI()": "5b2bd79e",
              "owner()": "8da5cb5b",
              "setBaseMetadataURI(string)": "7e518ec8",
              "transferOwnership(address)": "f2fde38b"
            }
          }
        }
      },
      "contracts/token/ERC1155/ERC1155InventoryBase.sol": {
        "ERC1155InventoryBase": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "collectionId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "bool",
                  "name": "fungible",
                  "type": "bool"
                }
              ],
              "name": "CollectionCreated",
              "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": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "owners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "collectionOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "tokenOwner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "isFungible",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "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": "value",
                  "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": "id",
                  "type": "uint256"
                }
              ],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "uri",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "collectionOf(uint256)": "c7778baa",
              "isApprovedForAll(address,address)": "e985e9c5",
              "isFungible(uint256)": "adebf6f2",
              "ownerOf(uint256)": "6352211e",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7",
              "totalSupply(uint256)": "bd85b039",
              "uri(uint256)": "0e89341c"
            }
          }
        }
      },
      "contracts/token/ERC1155/ERC1155InventoryIdentifiersLib.sol": {
        "ERC1155InventoryIdentifiersLib": {
          "abi": [],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201604033dcf90aa1251818fe445869da7abd0132470c255af6eb05b8e98298a7464736f6c63430007060033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 AND DIV SUB RETURNDATASIZE 0xCF SWAP1 0xAA SLT MLOAD DUP2 DUP16 0xE4 GASLIMIT DUP7 SWAP14 0xA7 0xAB 0xD0 SGT 0x24 PUSH17 0xC255AF6EB05B8E98298A7464736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "564:873:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201604033dcf90aa1251818fe445869da7abd0132470c255af6eb05b8e98298a7464736f6c63430007060033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 AND DIV SUB RETURNDATASIZE 0xCF SWAP1 0xAA SLT MLOAD DUP2 DUP16 0xE4 GASLIMIT DUP7 SWAP14 0xA7 0xAB 0xD0 SGT 0x24 PUSH17 0xC255AF6EB05B8E98298A7464736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "564:873:11:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "contracts/token/ERC1155/interfaces/IERC1155.sol": {
        "IERC1155": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_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": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "owners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "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": "value",
                  "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"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "isApprovedForAll(address,address)": "e985e9c5",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465"
            }
          }
        }
      },
      "contracts/token/ERC1155/interfaces/IERC1155Inventory.sol": {
        "IERC1155Inventory": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "collectionId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "bool",
                  "name": "fungible",
                  "type": "bool"
                }
              ],
              "name": "CollectionCreated",
              "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": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "owners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "collectionOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "isFungible",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "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": "value",
                  "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"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "collectionOf(uint256)": "c7778baa",
              "isApprovedForAll(address,address)": "e985e9c5",
              "isFungible(uint256)": "adebf6f2",
              "ownerOf(uint256)": "6352211e",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465"
            }
          }
        }
      },
      "contracts/token/ERC1155/interfaces/IERC1155InventoryCreator.sol": {
        "IERC1155InventoryCreator": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "collectionId",
                  "type": "uint256"
                }
              ],
              "name": "creator",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "creator(uint256)": "510b5158"
            }
          }
        }
      },
      "contracts/token/ERC1155/interfaces/IERC1155InventoryFunctions.sol": {
        "IERC1155InventoryFunctions": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "collectionOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "isFungible",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "collectionOf(uint256)": "c7778baa",
              "isFungible(uint256)": "adebf6f2",
              "ownerOf(uint256)": "6352211e"
            }
          }
        }
      },
      "contracts/token/ERC1155/interfaces/IERC1155InventoryTotalSupply.sol": {
        "IERC1155InventoryTotalSupply": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "totalSupply(uint256)": "bd85b039"
            }
          }
        }
      },
      "contracts/token/ERC1155/interfaces/IERC1155MetadataURI.sol": {
        "IERC1155MetadataURI": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "uri",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "uri(uint256)": "0e89341c"
            }
          }
        }
      },
      "contracts/token/ERC1155/interfaces/IERC1155TokenReceiver.sol": {
        "IERC1155TokenReceiver": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "onERC1155BatchReceived",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "onERC1155Received",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": "bc197c81",
              "onERC1155Received(address,address,uint256,uint256,bytes)": "f23a6e61"
            }
          }
        }
      },
      "contracts/token/ERC1155721/ERC1155721Inventory.sol": {
        "ERC1155721Inventory": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_approved",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "_tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "collectionId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "bool",
                  "name": "fungible",
                  "type": "bool"
                }
              ],
              "name": "CollectionCreated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "_tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": 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": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "tokenOwner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "owners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "nftIds",
                  "type": "uint256[]"
                }
              ],
              "name": "batchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "collectionOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "getApproved",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "tokenOwner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "isFungible",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "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": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "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": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "tokenURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "uri",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "batchTransferFrom(address,address,uint256[])": "f3993d11",
              "collectionOf(uint256)": "c7778baa",
              "getApproved(uint256)": "081812fc",
              "isApprovedForAll(address,address)": "e985e9c5",
              "isFungible(uint256)": "adebf6f2",
              "name()": "06fdde03",
              "ownerOf(uint256)": "6352211e",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256)": "42842e0e",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7",
              "symbol()": "95d89b41",
              "tokenURI(uint256)": "c87b56dd",
              "totalSupply(uint256)": "bd85b039",
              "transferFrom(address,address,uint256)": "23b872dd",
              "uri(uint256)": "0e89341c"
            }
          }
        }
      },
      "contracts/token/ERC1155721/ERC1155721InventoryBurnable.sol": {
        "ERC1155721InventoryBurnable": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_approved",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "_tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "collectionId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "bool",
                  "name": "fungible",
                  "type": "bool"
                }
              ],
              "name": "CollectionCreated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "_tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": 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": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "tokenOwner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "owners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "batchBurnFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "nftIds",
                  "type": "uint256[]"
                }
              ],
              "name": "batchBurnFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "nftIds",
                  "type": "uint256[]"
                }
              ],
              "name": "batchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "burnFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "collectionOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "getApproved",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "tokenOwner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "isFungible",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "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": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "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": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "tokenURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "uri",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "batchBurnFrom(address,uint256[])": "f2472965",
              "batchBurnFrom(address,uint256[],uint256[])": "80534934",
              "batchTransferFrom(address,address,uint256[])": "f3993d11",
              "burnFrom(address,uint256,uint256)": "124d91e5",
              "collectionOf(uint256)": "c7778baa",
              "getApproved(uint256)": "081812fc",
              "isApprovedForAll(address,address)": "e985e9c5",
              "isFungible(uint256)": "adebf6f2",
              "name()": "06fdde03",
              "ownerOf(uint256)": "6352211e",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256)": "42842e0e",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7",
              "symbol()": "95d89b41",
              "tokenURI(uint256)": "c87b56dd",
              "totalSupply(uint256)": "bd85b039",
              "transferFrom(address,address,uint256)": "23b872dd",
              "uri(uint256)": "0e89341c"
            }
          }
        }
      },
      "contracts/token/ERC1155721/interfaces/IERC1155721Inventory.sol": {
        "IERC1155721Inventory": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_approved",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "_tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "collectionId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "bool",
                  "name": "fungible",
                  "type": "bool"
                }
              ],
              "name": "CollectionCreated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "_tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": 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": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "balance",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "owners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "nftIds",
                  "type": "uint256[]"
                }
              ],
              "name": "batchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "collectionOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "getApproved",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "isFungible",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "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": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "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": "value",
                  "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": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "batchTransferFrom(address,address,uint256[])": "f3993d11",
              "collectionOf(uint256)": "c7778baa",
              "getApproved(uint256)": "081812fc",
              "isApprovedForAll(address,address)": "e985e9c5",
              "isFungible(uint256)": "adebf6f2",
              "ownerOf(uint256)": "6352211e",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256)": "42842e0e",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          }
        }
      },
      "contracts/token/ERC1155721/interfaces/IERC1155721InventoryBurnable.sol": {
        "IERC1155721InventoryBurnable": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "batchBurnFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "nftIds",
                  "type": "uint256[]"
                }
              ],
              "name": "batchBurnFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "burnFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "batchBurnFrom(address,uint256[])": "f2472965",
              "batchBurnFrom(address,uint256[],uint256[])": "80534934",
              "burnFrom(address,uint256,uint256)": "124d91e5"
            }
          }
        }
      },
      "contracts/token/ERC1155721/interfaces/IERC1155721InventoryDeliverable.sol": {
        "IERC1155721InventoryDeliverable": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "recipients",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeDeliver",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "safeDeliver(address[],uint256[],uint256[],bytes)": "e8ab9ccc"
            }
          }
        }
      },
      "contracts/token/ERC1155721/interfaces/IERC1155721InventoryMintable.sol": {
        "IERC1155721InventoryMintable": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "nftIds",
                  "type": "uint256[]"
                }
              ],
              "name": "batchMint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "mint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchMint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeMint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeMint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "batchMint(address,uint256[])": "4684d7e9",
              "mint(address,uint256)": "40c10f19",
              "safeBatchMint(address,uint256[],uint256[],bytes)": "0d6a5bbb",
              "safeMint(address,uint256,bytes)": "8832e6e3",
              "safeMint(address,uint256,uint256,bytes)": "5cfa9297"
            }
          }
        }
      },
      "contracts/token/ERC1155721/mocks/ERC1155721InventoryBurnableMock.sol": {
        "ERC1155721InventoryBurnableMock": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract IForwarderRegistry",
                  "name": "forwarderRegistry",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "universalForwarder",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "collectionMaskLength",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_approved",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "_tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "baseMetadataURI",
                  "type": "string"
                }
              ],
              "name": "BaseMetadataURISet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "collectionId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "bool",
                  "name": "fungible",
                  "type": "bool"
                }
              ],
              "name": "CollectionCreated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "MinterAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "MinterRemoved",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "_tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "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": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "addMinter",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "tokenOwner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "owners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "baseMetadataURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "batchBurnFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "nftIds",
                  "type": "uint256[]"
                }
              ],
              "name": "batchBurnFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "nftIds",
                  "type": "uint256[]"
                }
              ],
              "name": "batchMint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "nftIds",
                  "type": "uint256[]"
                }
              ],
              "name": "batchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "burnFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "collectionOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "collectionId",
                  "type": "uint256"
                }
              ],
              "name": "createCollection",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "collectionId",
                  "type": "uint256"
                }
              ],
              "name": "creator",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "getApproved",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "tokenOwner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "isFungible",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "isMinter",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "forwarder",
                  "type": "address"
                }
              ],
              "name": "isTrustedForwarder",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "mint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "msgData",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "ret",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "tokens",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "recoverERC20s",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "accounts",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "contracts",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "tokenIds",
                  "type": "uint256[]"
                }
              ],
              "name": "recoverERC721s",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceMinter",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchMint",
              "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": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "recipients",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeDeliver",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeMint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeMint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "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": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "baseMetadataURI_",
                  "type": "string"
                }
              ],
              "name": "setBaseMetadataURI",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "tokenURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "nftId",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "uri",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "60e06040523480156200001157600080fd5b50604051620061b4380380620061b4833981810160405260608110156200003757600080fd5b50805160208083015160409384015184518086018652601f81527f45524331313535373231496e76656e746f72794275726e61626c654d6f636b008185015285518087018752600481526324a72b2160e11b94810194909452600080546001600160a01b03191633908117825596519596939592949192859184918491849182918c918c918b918291907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160601b0319606091821b811660a05291901b16608052801580159062000112575061010081105b62000164576040805162461bcd60e51b815260206004820152601c60248201527f496e76656e746f72793a2077726f6e67206d61736b206c656e67746800000000604482015290519081900360640190fd5b60c05282516200017c90600690602086019062000200565b5081516200019290600790602085019062000200565b50505050505050620001aa81620001b460201b60201c565b50505050620002ac565b6001600160a01b0381166000818152600b6020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928262000238576000855562000283565b82601f106200025357805160ff191683800117855562000283565b8280016001018555821562000283579182015b828111156200028357825182559160200191906001019062000266565b506200029192915062000295565b5090565b5b8082111562000291576000815560010162000296565b60805160601c60a05160601c60c051615e4462000370600039806115375280611a245280612124528061219c528061249c528061266a52806126dd52806128535280612a2d5280612d5352806131225280613186528061374a5280613a255280613aa75280613c9f5280613eb05280613f7c5280614173528061428a52806146bb5280614a095280614e965280615665525080611d1352806153895280615b4f525080611d4e528061534e52806153e15280615b255280615bb05250615e446000f3fe608060405234801561001057600080fd5b50600436106102f35760003560e01c80638053493411610191578063c3666c36116100e3578063e8ab9ccc11610097578063f247296511610071578063f247296514611343578063f2fde38b146113f4578063f3993d111461141a576102f3565b8063e8ab9ccc146110ee578063e985e9c51461124c578063f242432a1461127a576102f3565b8063c7778baa116100c8578063c7778baa14611097578063c87b56dd146110b4578063d0011d9d146110d1576102f3565b8063c3666c3614610f81578063c4c2bfdc1461108f576102f3565b80639865027511610145578063adebf6f21161011f578063adebf6f214610e83578063b88d4fde14610ea0578063bd85b03914610f64576102f3565b80639865027514610e27578063a22cb46514610e2f578063aa271e1a14610e5d576102f3565b80638da5cb5b116101765780638da5cb5b14610df157806395d89b4114610df9578063983b2d5614610e01576102f3565b80638053493414610c3b5780638832e6e314610d6e576102f3565b806342842e0e1161024a5780635b2bd79e116101fe57806370a08231116101d857806370a0823114610a9957806373c8a95814610abf5780637e518ec814610bcd576102f3565b80635b2bd79e146109ea5780635cfa9297146109f25780636352211e14610a7c576102f3565b80634e1273f41161022f5780634e1273f414610899578063510b5158146109a7578063572b6c05146109c4576102f3565b806342842e0e146107e55780634684d7e91461081b576102f3565b80630d6a5bbb116102ac57806323b872dd1161028657806323b872dd146105c25780632eb2c2d6146105f857806340c10f19146107b9576102f3565b80630d6a5bbb146104555780630e89341c14610573578063124d91e514610590576102f3565b806306fdde03116102dd57806306fdde0314610371578063081812fc146103ee578063095ea7b314610427576102f3565b8062fdd58e146102f857806301ffc9a714610336575b600080fd5b6103246004803603604081101561030e57600080fd5b506001600160a01b0381351690602001356114d4565b60408051918252519081900360200190f35b61035d6004803603602081101561034c57600080fd5b50356001600160e01b0319166115c0565b604080519115158252519081900360200190f35b6103796115ed565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103b357818101518382015260200161039b565b50505050905090810190601f1680156103e05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61040b6004803603602081101561040457600080fd5b5035611684565b604080516001600160a01b039092168252519081900360200190f35b6104536004803603604081101561043d57600080fd5b506001600160a01b038135169060200135611723565b005b6104536004803603608081101561046b57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561049557600080fd5b8201836020820111156104a757600080fd5b803590602001918460208302840111600160201b831117156104c857600080fd5b919390929091602081019035600160201b8111156104e557600080fd5b8201836020820111156104f757600080fd5b803590602001918460208302840111600160201b8311171561051857600080fd5b919390929091602081019035600160201b81111561053557600080fd5b82018360208201111561054757600080fd5b803590602001918460018302840111600160201b8311171561056857600080fd5b50909250905061191f565b6103796004803603602081101561058957600080fd5b50356119da565b610453600480360360608110156105a657600080fd5b506001600160a01b0381351690602081013590604001356119e5565b610453600480360360608110156105d857600080fd5b506001600160a01b03813581169160208101359091169060400135611b38565b610453600480360360a081101561060e57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561064157600080fd5b82018360208201111561065357600080fd5b803590602001918460208302840111600160201b8311171561067457600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156106c357600080fd5b8201836020820111156106d557600080fd5b803590602001918460208302840111600160201b831117156106f657600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561074557600080fd5b82018360208201111561075757600080fd5b803590602001918460018302840111600160201b8311171561077857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611b5a945050505050565b610453600480360360408110156107cf57600080fd5b506001600160a01b038135169060200135611b6e565b610453600480360360608110156107fb57600080fd5b506001600160a01b03813581169160208101359091169060400135611b99565b6104536004803603604081101561083157600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561085b57600080fd5b82018360208201111561086d57600080fd5b803590602001918460208302840111600160201b8311171561088e57600080fd5b509092509050611bb6565b610957600480360360408110156108af57600080fd5b810190602081018135600160201b8111156108c957600080fd5b8201836020820111156108db57600080fd5b803590602001918460208302840111600160201b831117156108fc57600080fd5b919390929091602081019035600160201b81111561091957600080fd5b82018360208201111561092b57600080fd5b803590602001918460208302840111600160201b8311171561094c57600080fd5b509092509050611bfe565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561099357818101518382015260200161097b565b505050509050019250505060405180910390f35b61040b600480360360208110156109bd57600080fd5b5035611d04565b61035d600480360360208110156109da57600080fd5b50356001600160a01b0316611d0f565b610379611d88565b61045360048036036080811015610a0857600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b811115610a3e57600080fd5b820183602082011115610a5057600080fd5b803590602001918460018302840111600160201b83111715610a7157600080fd5b509092509050611e16565b61040b60048036036020811015610a9257600080fd5b5035611e63565b61032460048036036020811015610aaf57600080fd5b50356001600160a01b0316611e6e565b61045360048036036060811015610ad557600080fd5b810190602081018135600160201b811115610aef57600080fd5b820183602082011115610b0157600080fd5b803590602001918460208302840111600160201b83111715610b2257600080fd5b919390929091602081019035600160201b811115610b3f57600080fd5b820183602082011115610b5157600080fd5b803590602001918460208302840111600160201b83111715610b7257600080fd5b919390929091602081019035600160201b811115610b8f57600080fd5b820183602082011115610ba157600080fd5b803590602001918460208302840111600160201b83111715610bc257600080fd5b509092509050611ee7565b61045360048036036020811015610be357600080fd5b810190602081018135600160201b811115610bfd57600080fd5b820183602082011115610c0f57600080fd5b803590602001918460018302840111600160201b83111715610c3057600080fd5b509092509050611fd9565b61045360048036036060811015610c5157600080fd5b6001600160a01b038235169190810190604081016020820135600160201b811115610c7b57600080fd5b820183602082011115610c8d57600080fd5b803590602001918460208302840111600160201b83111715610cae57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b811115610cfd57600080fd5b820183602082011115610d0f57600080fd5b803590602001918460208302840111600160201b83111715610d3057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612055945050505050565b61045360048036036060811015610d8457600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b811115610db357600080fd5b820183602082011115610dc557600080fd5b803590602001918460018302840111600160201b83111715610de657600080fd5b509092509050612322565b61040b612377565b610379612386565b61045360048036036020811015610e1757600080fd5b50356001600160a01b03166123e7565b6104536123fe565b61045360048036036040811015610e4557600080fd5b506001600160a01b038135169060200135151561245c565b61035d60048036036020811015610e7357600080fd5b50356001600160a01b0316612466565b61035d60048036036020811015610e9957600080fd5b503561247b565b61045360048036036080811015610eb657600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b811115610ef057600080fd5b820183602082011115610f0257600080fd5b803590602001918460018302840111600160201b83111715610f2357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612486945050505050565b61032460048036036020811015610f7a57600080fd5b5035612494565b61045360048036036060811015610f9757600080fd5b810190602081018135600160201b811115610fb157600080fd5b820183602082011115610fc357600080fd5b803590602001918460208302840111600160201b83111715610fe457600080fd5b919390929091602081019035600160201b81111561100157600080fd5b82018360208201111561101357600080fd5b803590602001918460208302840111600160201b8311171561103457600080fd5b919390929091602081019035600160201b81111561105157600080fd5b82018360208201111561106357600080fd5b803590602001918460208302840111600160201b8311171561108457600080fd5b50909250905061250b565b610379612653565b610324600480360360208110156110ad57600080fd5b5035612662565b610379600480360360208110156110ca57600080fd5b5035612701565b610453600480360360208110156110e757600080fd5b5035612776565b6104536004803603608081101561110457600080fd5b810190602081018135600160201b81111561111e57600080fd5b82018360208201111561113057600080fd5b803590602001918460208302840111600160201b8311171561115157600080fd5b919390929091602081019035600160201b81111561116e57600080fd5b82018360208201111561118057600080fd5b803590602001918460208302840111600160201b831117156111a157600080fd5b919390929091602081019035600160201b8111156111be57600080fd5b8201836020820111156111d057600080fd5b803590602001918460208302840111600160201b831117156111f157600080fd5b919390929091602081019035600160201b81111561120e57600080fd5b82018360208201111561122057600080fd5b803590602001918460018302840111600160201b8311171561124157600080fd5b50909250905061278a565b61035d6004803603604081101561126257600080fd5b506001600160a01b03813581169160200135166127a5565b610453600480360360a081101561129057600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b8111156112cf57600080fd5b8201836020820111156112e157600080fd5b803590602001918460018302840111600160201b8311171561130257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506127b8945050505050565b6104536004803603604081101561135957600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561138357600080fd5b82018360208201111561139557600080fd5b803590602001918460208302840111600160201b831117156113b657600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061293c945050505050565b6104536004803603602081101561140a57600080fd5b50356001600160a01b0316612ba9565b6104536004803603606081101561143057600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561146357600080fd5b82018360208201111561147557600080fd5b803590602001918460208302840111600160201b8311171561149657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612c0f945050505050565b60006001600160a01b038316611531576040805162461bcd60e51b815260206004820152601760248201527f496e76656e746f72793a207a65726f2061646472657373000000000000000000604482015290519081900360640190fd5b61155b827f0000000000000000000000000000000000000000000000000000000000000000612f06565b15611595576000828152600460205260409020546001600160a01b0384811691161461158857600061158b565b60015b60ff1690506115ba565b5060008181526002602090815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216630a216a2b60e31b14806115e557506115e582612f2c565b90505b919050565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156116795780601f1061164e57610100808354040283529160200191611679565b820191906000526020600020905b81548152906001019060200180831161165c57829003601f168201915b505050505090505b90565b6000818152600460205260408120546001600160a01b0381166116ee576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f6e2d6578697374696e67204e46540000000000604482015290519081900360640190fd5b600160a01b8116156117195750506000818152600960205260409020546001600160a01b03166115e8565b60009150506115e8565b60008181526004602052604090205480611784576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f6e2d6578697374696e67204e46540000000000604482015290519081900360640190fd5b806001600160a01b0384811690821614156117e6576040805162461bcd60e51b815260206004820152601860248201527f496e76656e746f72793a2073656c662d617070726f76616c0000000000000000604482015290519081900360640190fd5b6117f7816117f2612f51565b612f5b565b611848576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000604482015290519081900360640190fd5b6001600160a01b03841661188257600160a01b82161561187d5760008381526004602052604090206001600160a01b03821690555b6118d8565b600160a01b82178083146118a25760008481526004602052604090208190555b506000838152600960205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0386161790555b82846001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a450505050565b61192f61192a612f51565b612fa7565b6119d18787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808b0282810182019093528a82529093508a92508991829185019084908082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061301492505050565b50505050505050565b60606115e58261339f565b60006119ef612f51565b905060006119fd8583612f5b565b9050611a0884613472565b15611a1e57611a198585858461347c565b611ad3565b611a48847f0000000000000000000000000000000000000000000000000000000000000000612f06565b15611a8657611a5b8585858460006135d0565b60405184906000906001600160a01b03881690600080516020615def833981519152908390a4611ad3565b6040805162461bcd60e51b815260206004820152601960248201527f496e76656e746f72793a206e6f74206120746f6b656e20696400000000000000604482015290519081900360640190fd5b60006001600160a01b0316856001600160a01b0316836001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051808381526020018281526020019250505060405180910390a45050505050565b611b5583838360405180602001604052806000815250600061379e565b505050565b611b6785858585856138fa565b5050505050565b611b7961192a612f51565b611b958282604051806020016040528060008152506000613c44565b5050565b611b5583838360405180602001604052806000815250600161379e565b611bc161192a612f51565b611b5583838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613de992505050565b6060838214611c54576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b60008467ffffffffffffffff81118015611c6d57600080fd5b50604051908082528060200260200182016040528015611c97578160200160208202803683370190505b50905060005b808614611cfa57611cdb878783818110611cb357fe5b905060200201356001600160a01b0316868684818110611ccf57fe5b905060200201356114d4565b828281518110611ce757fe5b6020908102919091010152600101611c9d565b5095945050505050565b60006115e58261416b565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614806115e557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316149050919050565b600a805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015611e0e5780601f10611de357610100808354040283529160200191611e0e565b820191906000526020600020905b815481529060010190602001808311611df157829003601f168201915b505050505081565b611e2161192a612f51565b611b6785858585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061420592505050565b60006115e582614359565b60006001600160a01b038216611ecb576040805162461bcd60e51b815260206004820152601760248201527f496e76656e746f72793a207a65726f2061646472657373000000000000000000604482015290519081900360640190fd5b506001600160a01b031660009081526008602052604090205490565b611ef7611ef2612f51565b6143c3565b848381148015611f0657508082145b611f57576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b818114611fcf57611fc7888883818110611f7057fe5b905060200201356001600160a01b0316858584818110611f8c57fe5b90506020020135888885818110611f9f57fe5b905060200201356001600160a01b03166001600160a01b03166144879092919063ffffffff16565b600101611f5a565b5050505050505050565b611fe4611ef2612f51565b611ff0600a8383615d25565b507f04b1dc5c136a3ce9fded8db0ce3d3366c58764ec3a8e4c2b9e52e4ddfe5ebbf7828260405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a15050565b8151815181146120ac576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b60006120b6612f51565b905060006120c48683612f5b565b90506000806000805b8681146122075760008982815181106120e257fe5b602002602001015190506120f581613472565b1561211e576121198b828b858151811061210b57fe5b60200260200101518961347c565b6121fe565b612148817f0000000000000000000000000000000000000000000000000000000000000000612f06565b15611a865761216e8b828b858151811061215e57fe5b60200260200101518960016135d0565b60405181906000906001600160a01b038e1690600080516020615def833981519152908390a460006121c0827f00000000000000000000000000000000000000000000000000000000000000006144ee565b9050856121d357809550600194506121fc565b8581146121f5576121e58c8787614504565b94506001939290920191846121fc565b8460010194505b505b506001016120cd565b50821561223d57612219898484614504565b6001600160a01b038916600090815260086020526040902080549183019182900390555b60006001600160a01b0316896001600160a01b0316866001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8b8b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156122c35781810151838201526020016122ab565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156123025781810151838201526020016122ea565b5050505090500194505050505060405180910390a4505050505050505050565b61232d61192a612f51565b612371848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250613c44915050565b50505050565b6000546001600160a01b031690565b60078054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156116795780601f1061164e57610100808354040283529160200191611679565b6123f2611ef2612f51565b6123fb81614544565b50565b6000612408612f51565b905061241381612fa7565b6001600160a01b0381166000818152600b6020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a250565b611b958282614590565b600b6020526000908152604090205460ff1681565b60006115e582613472565b61237184848484600161379e565b60006124c0827f0000000000000000000000000000000000000000000000000000000000000000612f06565b156124f6576000828152600460205260409020546001600160a01b0316156124e95760016124ec565b60005b60ff1690506115e8565b506000818152600360205260409020546115e8565b612516611ef2612f51565b84838114801561252557508082145b612576576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b818114611fcf5785858281811061258c57fe5b905060200201356001600160a01b03166001600160a01b03166323b872dd308a8a858181106125b757fe5b905060200201356001600160a01b03168787868181106125d357fe5b905060200201356040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b15801561263057600080fd5b505af1158015612644573d6000803e3d6000fd5b50505050806001019050612579565b606061265d614671565b905090565b600061268e827f0000000000000000000000000000000000000000000000000000000000000000612f06565b6126d7576040805162461bcd60e51b8152602060048201526015602482015274125b9d995b9d1bdc9e4e881b9bdd08185b88139195605a1b604482015290519081900360640190fd5b6115e5827f00000000000000000000000000000000000000000000000000000000000000006144ee565b6000818152600460205260409020546060906001600160a01b031661276d576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f6e2d6578697374696e67204e46540000000000604482015290519081900360640190fd5b6115e5826119da565b612781611ef2612f51565b6123fb816146b5565b61279561192a612f51565b611fcf8888888888888888614817565b60006127b18383614b72565b9392505050565b60006127c2612f51565b90506001600160a01b03851661281f576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220746f207a65726f0000000000604482015290519081900360640190fd5b600061282b8783612f5b565b905061283685613472565b1561284d576128488787878785614ba0565b6128bb565b612877857f0000000000000000000000000000000000000000000000000000000000000000612f06565b15611a865761288b87878787856000614d0b565b84866001600160a01b0316886001600160a01b0316600080516020615def83398151915260405160405180910390a45b856001600160a01b0316876001600160a01b0316836001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628888604051808381526020018281526020019250505060405180910390a461292a866001600160a01b0316614ec1565b156119d1576119d18787878787614ec7565b6000612946612f51565b905060006129548483612f5b565b835190915060008167ffffffffffffffff8111801561297257600080fd5b5060405190808252806020026020018201604052801561299c578160200160208202803683370190505b50905060008060005b848114612a935760008882815181106129ba57fe5b6020026020010151905060018583815181106129d257fe5b6020026020010181815250506129ff8a828785815181106129ef57fe5b60200260200101518a60016135d0565b60405181906000906001600160a01b038d1690600080516020615def833981519152908390a46000612a51827f00000000000000000000000000000000000000000000000000000000000000006144ee565b905084612a645780945060019350612a89565b848114612a8257612a768b8686614504565b80945060019350612a89565b8360010193505b50506001016129a5565b508115612ac557612aa5888383614504565b6001600160a01b0388166000908152600860205260409020805485900390555b60006001600160a01b0316886001600160a01b0316876001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8a87604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015612b4b578181015183820152602001612b33565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015612b8a578181015183820152602001612b72565b5050505090500194505050505060405180910390a45050505050505050565b612bb4611ef2612f51565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001600160a01b038216612c6a576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220746f207a65726f0000000000604482015290519081900360640190fd5b6000612c74612f51565b90506000612c828583612f5b565b835190915060008167ffffffffffffffff81118015612ca057600080fd5b50604051908082528060200260200182016040528015612cca578160200160208202803683370190505b50905060008060005b848114612dba576000888281518110612ce857fe5b602002602001015190506001858381518110612d0057fe5b602002602001018181525050612d1c8b8b8360018b6001614d0b565b808a6001600160a01b03168c6001600160a01b0316600080516020615def83398151915260405160405180910390a46000612d77827f00000000000000000000000000000000000000000000000000000000000000006144ee565b905084612d8a5780945060019350612db0565b848114612da957612d9d8c8c8787615038565b80945060019350612db0565b8360010193505b5050600101612cd3565b508115612dd857612dcd89898484615038565b612dd889898661508c565b876001600160a01b0316896001600160a01b0316612df4612f51565b6001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8a87604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015612e64578181015183820152602001612e4c565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015612ea3578181015183820152602001612e8b565b5050505090500194505050505060405180910390a4612eca886001600160a01b0316614ec1565b8015612eda5750612eda886150d7565b15612efb57612efb898989866040518060200160405280600081525061516d565b505050505050505050565b6000600160ff1b8316158015906127b15750612f21826152d2565b909216151592915050565b60006001600160e01b031982166318167c6d60e21b14806115e557506115e5826152e3565b600061265d61533e565b6000816001600160a01b0316836001600160a01b031614806127b15750506001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b6001600160a01b0381166000908152600b602052604090205460ff166123fb576040805162461bcd60e51b815260206004820152601860248201527f4d696e746572526f6c653a206e6f742061204d696e7465720000000000000000604482015290519081900360640190fd5b6001600160a01b038416613069576040805162461bcd60e51b8152602060048201526017602482015276496e76656e746f72793a206d696e7420746f207a65726f60481b604482015290519081900360640190fd5b8251825181146130c0576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b6000806000805b84811461324d5760008882815181106130dc57fe5b6020026020010151905060008883815181106130f457fe5b6020026020010151905061310782613472565b1561311c576131178b838361549e565b613243565b613146827f0000000000000000000000000000000000000000000000000000000000000000612f06565b15611a86576131588b83836001615588565b60405182906001600160a01b038d1690600090600080516020615def833981519152908290a460006131aa837f00000000000000000000000000000000000000000000000000000000000000006144ee565b9050866131bd5780965060019550613241565b86811461323a57856002600089815260200190815260200160002060008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008282540192505081905550856003600089815260200190815260200160002060008282540192505081905550809650858501945060019550613241565b8560010195505b505b50506001016130c7565b5082156132a25760008381526002602090815260408083206001600160a01b038c1680855290835281842080548701905586845260038352818420805487019055835260089091529020805491830191820190555b6001600160a01b03881660006132b6612f51565b6001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8a8a604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561332657818101518382015260200161330e565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561336557818101518382015260200161334d565b5050505090500194505050505060405180910390a461338c886001600160a01b0316614ec1565b15611fcf57611fcf60008989898961516d565b6060600a6133ac836156d8565b604051602001808380546001816001161561010002031660029004801561340a5780601f106133e857610100808354040283529182019161340a565b820191906000526020600020905b8154815290600101906020018083116133f6575b5050825160208401908083835b602083106134365780518252601f199092019160209182019101613417565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529050919050565b600160ff1b161590565b816134c6576040805162461bcd60e51b8152602060048201526015602482015274496e76656e746f72793a207a65726f2076616c756560581b604482015290519081900360640190fd5b80613518576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000604482015290519081900360640190fd5b60008381526002602090815260408083206001600160a01b038816845290915290205482811015613590576040805162461bcd60e51b815260206004820152601d60248201527f496e76656e746f72793a206e6f7420656e6f7567682062616c616e6365000000604482015290519081900360640190fd5b60008481526002602090815260408083206001600160a01b0390981683529681528682209285900390925593845260039052509190208054919091039055565b82600114613625576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a2077726f6e67204e46542076616c7565000000000000604482015290519081900360640190fd5b6000848152600460205260409020546001600160a01b0386811690821614613694576040805162461bcd60e51b815260206004820152601860248201527f496e76656e746f72793a206e6f6e2d6f776e6564204e46540000000000000000604482015290519081900360640190fd5b8261372557600160a01b8116158015906136d457506000858152600960205260409020546001600160a01b03166136c9612f51565b6001600160a01b0316145b613725576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000604482015290519081900360640190fd5b600085815260046020526040902061dead60f01b905581613796576137758661376e877f00000000000000000000000000000000000000000000000000000000000000006144ee565b6001614504565b6001600160a01b038616600090815260086020526040902080546000190190555b505050505050565b6001600160a01b0384166137f9576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220746f207a65726f0000000000604482015290519081900360640190fd5b6000613803612f51565b905060006138118783612f5b565b90506138238787876001856000614d0b565b84866001600160a01b0316886001600160a01b0316600080516020615def83398151915260405160405180910390a4856001600160a01b0316876001600160a01b0316836001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62886001604051808381526020018281526020019250505060405180910390a46138c2866001600160a01b0316614ec1565b156119d1576138d0866150d7565b156138e8576138e3878787600188614ec7565b6119d1565b82156119d1576119d1878787876157cb565b6001600160a01b038416613955576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220746f207a65726f0000000000604482015290519081900360640190fd5b8251825181146139ac576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b60006139b6612f51565b905060006139c48883612f5b565b90506000806000805b868114613b135760008a82815181106139e257fe5b602002602001015190506139f581613472565b15613a1f57613a1a8d8d838d8681518110613a0c57fe5b60200260200101518a614ba0565b613b0a565b613a49817f0000000000000000000000000000000000000000000000000000000000000000612f06565b15611a8657613a708d8d838d8681518110613a6057fe5b60200260200101518a6001614d0b565b808c6001600160a01b03168e6001600160a01b0316600080516020615def83398151915260405160405180910390a46000613acb827f00000000000000000000000000000000000000000000000000000000000000006144ee565b905085613ade5780955060019450613b08565b858114613b0157613af18e8e8888615038565b9450600193929092019184613b08565b8460010194505b505b506001016139cd565b508215613b3357613b268b8b8585615038565b8101613b338b8b8361508c565b896001600160a01b03168b6001600160a01b0316613b4f612f51565b6001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015613bbf578181015183820152602001613ba7565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015613bfe578181015183820152602001613be6565b5050505090500194505050505060405180910390a4613c258a6001600160a01b0316614ec1565b15613c3757613c378b8b8b8b8b61516d565b5050505050505050505050565b6001600160a01b038416613c99576040805162461bcd60e51b8152602060048201526017602482015276496e76656e746f72793a206d696e7420746f207a65726f60481b604482015290519081900360640190fd5b613cc3837f0000000000000000000000000000000000000000000000000000000000000000612f06565b613d0c576040805162461bcd60e51b8152602060048201526015602482015274125b9d995b9d1bdc9e4e881b9bdd08185b88139195605a1b604482015290519081900360640190fd5b613d1a848460016000615588565b60405183906001600160a01b03861690600090600080516020615def833981519152908290a46001600160a01b0384166000613d54612f51565b6001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62866001604051808381526020018281526020019250505060405180910390a4613daf846001600160a01b0316614ec1565b1561237157613dbd846150d7565b15613dd657613dd160008585600186614ec7565b612371565b80156123715761237160008585856157cb565b6001600160a01b038216613e3e576040805162461bcd60e51b8152602060048201526017602482015276496e76656e746f72793a206d696e7420746f207a65726f60481b604482015290519081900360640190fd5b805160008167ffffffffffffffff81118015613e5957600080fd5b50604051908082528060200260200182016040528015613e83578160200160208202803683370190505b50905060008060005b84811461400f576000868281518110613ea157fe5b60200260200101519050613ede7f000000000000000000000000000000000000000000000000000000000000000082612f0690919063ffffffff16565b613f27576040805162461bcd60e51b8152602060048201526015602482015274125b9d995b9d1bdc9e4e881b9bdd08185b88139195605a1b604482015290519081900360640190fd5b6001858381518110613f3557fe5b602002602001018181525050613f4e8882600180615588565b60405181906001600160a01b038a1690600090600080516020615def833981519152908290a46000613fa0827f00000000000000000000000000000000000000000000000000000000000000006144ee565b905084613fb35780945060019350614005565b848114613ffe5760008581526002602090815260408083206001600160a01b038d16845282528083208054880190559682526003905294909420805490930190925560019183614005565b8360010193505b5050600101613e8c565b5060008281526002602090815260408083206001600160a01b038a16808552908352818420805486019055858452600383528184208054860190558084526008909252822080548701905590614063612f51565b6001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8887604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156140d35781810151838201526020016140bb565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156141125781810151838201526020016140fa565b5050505090500194505050505060405180910390a4614139866001600160a01b0316614ec1565b80156141495750614149866150d7565b156137965761379660008787866040518060200160405280600081525061516d565b6000614197827f0000000000000000000000000000000000000000000000000000000000000000612f06565b156141e9576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f74206120636f6c6c656374696f6e0000000000604482015290519081900360640190fd5b506000908152600560205260409020546001600160a01b031690565b6001600160a01b03841661425a576040805162461bcd60e51b8152602060048201526017602482015276496e76656e746f72793a206d696e7420746f207a65726f60481b604482015290519081900360640190fd5b6000614264612f51565b905061426f84613472565b156142845761427f85858561549e565b6142e7565b6142ae847f0000000000000000000000000000000000000000000000000000000000000000612f06565b15611a86576142c08585856000615588565b60405184906001600160a01b03871690600090600080516020615def833981519152908290a45b604080518581526020810185905281516001600160a01b0380891693600093918616927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629281900390910190a4614346856001600160a01b0316614ec1565b15611b6757611b67600086868686614ec7565b6000818152600460205260408120546001600160a01b0381166115e5576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f6e2d6578697374696e67204e46540000000000604482015290519081900360640190fd5b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156143fc57600080fd5b505afa158015614410573d6000803e3d6000fd5b505050506040513d602081101561442657600080fd5b50516001600160a01b038281169116146123fb576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b179052611b55908490615934565b60006144f9826152d2565b198316905092915050565b60008281526002602090815260408083206001600160a01b0390961683529481528482208054849003905592815260039092529190208054919091039055565b6001600160a01b0381166000818152600b6020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b600061459a612f51565b9050806001600160a01b0316836001600160a01b03161415614603576040805162461bcd60e51b815260206004820152601860248201527f496e76656e746f72793a2073656c662d617070726f76616c0000000000000000604482015290519081900360640190fd5b6001600160a01b03818116600081815260016020908152604080832094881680845294825291829020805460ff1916871515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b606061467b615b17565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092935050505090565b6146df817f0000000000000000000000000000000000000000000000000000000000000000612f06565b15614731576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f74206120636f6c6c656374696f6e0000000000604482015290519081900360640190fd5b6000818152600560205260409020546001600160a01b03161561479b576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206578697374696e6720636f6c6c656374696f6e0000604482015290519081900360640190fd5b6147a3612f51565b6000828152600560205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556147e581613472565b1515817f4ebf8ad0df535ba5e487bc9cb27fe44120ca81c3a95d3eba79c0bd1df2ab2d5d60405160405180910390a350565b86858114801561482657508084145b614877576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b6000614881612f51565b905060005b828114613c375760008b8b8381811061489b57fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b0316141561490f576040805162461bcd60e51b8152602060048201526017602482015276496e76656e746f72793a206d696e7420746f207a65726f60481b604482015290519081900360640190fd5b60008a8a8481811061491d57fe5b905060200201359050600089898581811061493457fe5b90506020020135905061494682613472565b15614a035761495683838361549e565b604080518381526020810183905281516001600160a01b0380871693600093918a16927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629281900390910190a46149b5836001600160a01b0316614ec1565b156149fe576149fe60008484848c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250614ec792505050565b614b64565b614a2d827f0000000000000000000000000000000000000000000000000000000000000000612f06565b15611a8657614a3f8383836000615588565b60405182906001600160a01b03851690600090600080516020615def833981519152908290a4604080518381526001602082015281516001600160a01b0380871693600093918a16927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629281900390910190a4614ac4836001600160a01b0316614ec1565b156149fe57614ad2836150d7565b15614b2157614b1c6000848460018c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250614ec792505050565b6149fe565b6149fe600084848b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506157cb92505050565b505050806001019050614886565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b80614bf2576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000604482015290519081900360640190fd5b81614c3c576040805162461bcd60e51b8152602060048201526015602482015274496e76656e746f72793a207a65726f2076616c756560581b604482015290519081900360640190fd5b60008381526002602090815260408083206001600160a01b038916845290915290205482811015614cb4576040805162461bcd60e51b815260206004820152601d60248201527f496e76656e746f72793a206e6f7420656e6f7567682062616c616e6365000000604482015290519081900360640190fd5b846001600160a01b0316866001600160a01b0316146137965760009384526002602090815260408086206001600160a01b039889168752909152808520918490039091559390941682529190208054909101905550565b82600114614d60576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a2077726f6e67204e46542076616c7565000000000000604482015290519081900360640190fd5b6000848152600460205260409020546001600160a01b0387811690821614614dcf576040805162461bcd60e51b815260206004820152601860248201527f496e76656e746f72793a206e6f6e2d6f776e6564204e46540000000000000000604482015290519081900360640190fd5b82614e6057600160a01b811615801590614e0f57506000858152600960205260409020546001600160a01b0316614e04612f51565b6001600160a01b0316145b614e60576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000604482015290519081900360640190fd5b60008581526004602052604090206001600160a01b0387169055816119d157614e8b8787600161508c565b6119d18787614eba887f00000000000000000000000000000000000000000000000000000000000000006144ee565b6001615038565b3b151590565b63f23a6e6160e01b6001600160a01b03851663f23a6e61614ee6612f51565b888787876040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614f60578181015183820152602001614f48565b50505050905090810190601f168015614f8d5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b158015614fb057600080fd5b505af1158015614fc4573d6000803e3d6000fd5b505050506040513d6020811015614fda57600080fd5b50516001600160e01b03191614611b67576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220726566757365640000000000604482015290519081900360640190fd5b826001600160a01b0316846001600160a01b0316146123715760009182526002602090815260408084206001600160a01b039687168552909152808320805483900390559290931681522080549091019055565b816001600160a01b0316836001600160a01b031614611b55576001600160a01b0380841660009081526008602052604080822080548590039055918416815220805482019055505050565b60408051630271189760e51b6024808301919091528251808303909101815260449091018252602081810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b1781528251935160008082529485948594909392908183858b612710fa955080519450505050609e5a1161515a57fe5b8280156151645750815b95945050505050565b63bc197c8160e01b6001600160a01b03851663bc197c8161518c612f51565b888787876040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b838110156152055781810151838201526020016151ed565b50505050905001848103835286818151815260200191508051906020019060200280838360005b8381101561524457818101518382015260200161522c565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015615280578181015183820152602001615268565b50505050905090810190601f1680156152ad5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b158015614fb057600080fd5b6001610100919091031b6000190190565b60006001600160e01b031982166380ac58cd60e01b148061531457506001600160e01b03198216635b5e139f60e01b145b8061532f57506001600160e01b0319821663f3993d1160e01b145b806115e557506115e582615c7a565b6000338161534a615cfe565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614806153bd57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b156153cb5791506116819050565b6001600160a01b038216321480159061548a57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d682846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561545d57600080fd5b505afa158015615471573d6000803e3d6000fd5b505050506040513d602081101561548757600080fd5b50515b156154985791506116819050565b50905090565b806154e8576040805162461bcd60e51b8152602060048201526015602482015274496e76656e746f72793a207a65726f2076616c756560581b604482015290519081900360640190fd5b60008281526003602052604090205481810181811161554e576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a20737570706c79206f766572666c6f77000000000000604482015290519081900360640190fd5b600093845260036020908152604080862092909255600281528185206001600160a01b039096168552949094525091902080549091019055565b816001146155dd576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a2077726f6e67204e46542076616c7565000000000000604482015290519081900360640190fd5b6000838152600460205260409020541561563e576040805162461bcd60e51b815260206004820152601d60248201527f496e76656e746f72793a206578697374696e672f6275726e74204e4654000000604482015290519081900360640190fd5b60008381526004602052604090206001600160a01b038516905580612371576000615689847f00000000000000000000000000000000000000000000000000000000000000006144ee565b600090815260036020908152604080832080546001908101909155600283528184206001600160a01b038a16855283528184208054820190556008909252909120805490910190555050505050565b6060816156fd57506040805180820190915260018152600360fc1b60208201526115e8565b8160005b811561571557600101600a82049150615701565b60008167ffffffffffffffff8111801561572e57600080fd5b506040519080825280601f01601f191660200182016040528015615759576020820181803683370190505b50859350905060001982015b83156157c257600a840660300160f81b8282806001900393508151811061578857fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350615765565b50949350505050565b630a85bd0160e11b6001600160a01b03841663150b7a026157ea612f51565b8786866040518563ffffffff1660e01b815260040180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561585d578181015183820152602001615845565b50505050905090810190601f16801561588a5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156158ac57600080fd5b505af11580156158c0573d6000803e3d6000fd5b505050506040513d60208110156158d657600080fd5b50516001600160e01b03191614612371576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220726566757365640000000000604482015290519081900360640190fd5b816159476001600160a01b038216614ec1565b615998576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b602083106159d55780518252601f1990920191602091820191016159b6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114615a37576040519150601f19603f3d011682016040523d82523d6000602084013e615a3c565b606091505b50915091508115615abb57805115615ab657808060200190516020811015615a6357600080fd5b5051615ab6576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b611b67565b8051615b0e576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b366000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016811480615b8357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316145b15615b9a57615b90615d0a565b9250925050615c76565b6001600160a01b0381163214801590615c6057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d6615be5615cfe565b836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b158015615c3357600080fd5b505afa158015615c47573d6000803e3d6000fd5b505050506040513d6020811015615c5d57600080fd5b50515b15615c6d57615b90615d0a565b60003692509250505b9091565b60006001600160e01b031982166301ffc9a760e01b1480615cab57506001600160e01b03198216636cdb3d1360e11b145b80615cc657506001600160e01b031982166303a24d0760e21b145b80615ce157506001600160e01b031982166304e72e2360e11b145b806115e55750506001600160e01b03191663bd85b03960e01b1490565b60131936013560601c90565b366000615d1d6013198301828481615dc6565b915091509091565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282615d5b5760008555615da1565b82601f10615d745782800160ff19823516178555615da1565b82800160010185558215615da1579182015b82811115615da1578235825591602001919060010190615d86565b50615dad929150615db1565b5090565b5b80821115615dad5760008155600101615db2565b60008085851115615dd5578182fd5b83861115615de1578182fd5b505082019391909203915056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220096082eabd5b190cf5232ac484044a65896b14c5f05739b67e942bd9a1d2a62064736f6c63430007060033",
              "opcodes": "PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x61B4 CODESIZE SUB DUP1 PUSH3 0x61B4 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD DUP5 MLOAD DUP1 DUP7 ADD DUP7 MSTORE PUSH1 0x1F DUP2 MSTORE PUSH32 0x45524331313535373231496E76656E746F72794275726E61626C654D6F636B00 DUP2 DUP6 ADD MSTORE DUP6 MLOAD DUP1 DUP8 ADD DUP8 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x24A72B21 PUSH1 0xE1 SHL SWAP5 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR DUP3 SSTORE SWAP7 MLOAD SWAP6 SWAP7 SWAP4 SWAP6 SWAP3 SWAP5 SWAP2 SWAP3 DUP6 SWAP2 DUP5 SWAP2 DUP5 SWAP2 DUP5 SWAP2 DUP3 SWAP2 DUP13 SWAP2 DUP13 SWAP2 DUP12 SWAP2 DUP3 SWAP2 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0xA0 MSTORE SWAP2 SWAP1 SHL AND PUSH1 0x80 MSTORE DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH3 0x112 JUMPI POP PUSH2 0x100 DUP2 LT JUMPDEST PUSH3 0x164 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2077726F6E67206D61736B206C656E67746800000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0xC0 MSTORE DUP3 MLOAD PUSH3 0x17C SWAP1 PUSH1 0x6 SWAP1 PUSH1 0x20 DUP7 ADD SWAP1 PUSH3 0x200 JUMP JUMPDEST POP DUP2 MLOAD PUSH3 0x192 SWAP1 PUSH1 0x7 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x200 JUMP JUMPDEST POP POP POP POP POP POP POP PUSH3 0x1AA DUP2 PUSH3 0x1B4 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP POP POP POP PUSH3 0x2AC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x238 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x283 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x253 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x283 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x283 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x283 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x266 JUMP JUMPDEST POP PUSH3 0x291 SWAP3 SWAP2 POP PUSH3 0x295 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x291 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x296 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH2 0x5E44 PUSH3 0x370 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x1537 MSTORE DUP1 PUSH2 0x1A24 MSTORE DUP1 PUSH2 0x2124 MSTORE DUP1 PUSH2 0x219C MSTORE DUP1 PUSH2 0x249C MSTORE DUP1 PUSH2 0x266A MSTORE DUP1 PUSH2 0x26DD MSTORE DUP1 PUSH2 0x2853 MSTORE DUP1 PUSH2 0x2A2D MSTORE DUP1 PUSH2 0x2D53 MSTORE DUP1 PUSH2 0x3122 MSTORE DUP1 PUSH2 0x3186 MSTORE DUP1 PUSH2 0x374A MSTORE DUP1 PUSH2 0x3A25 MSTORE DUP1 PUSH2 0x3AA7 MSTORE DUP1 PUSH2 0x3C9F MSTORE DUP1 PUSH2 0x3EB0 MSTORE DUP1 PUSH2 0x3F7C MSTORE DUP1 PUSH2 0x4173 MSTORE DUP1 PUSH2 0x428A MSTORE DUP1 PUSH2 0x46BB MSTORE DUP1 PUSH2 0x4A09 MSTORE DUP1 PUSH2 0x4E96 MSTORE DUP1 PUSH2 0x5665 MSTORE POP DUP1 PUSH2 0x1D13 MSTORE DUP1 PUSH2 0x5389 MSTORE DUP1 PUSH2 0x5B4F MSTORE POP DUP1 PUSH2 0x1D4E MSTORE DUP1 PUSH2 0x534E MSTORE DUP1 PUSH2 0x53E1 MSTORE DUP1 PUSH2 0x5B25 MSTORE DUP1 PUSH2 0x5BB0 MSTORE POP PUSH2 0x5E44 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2F3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x80534934 GT PUSH2 0x191 JUMPI DUP1 PUSH4 0xC3666C36 GT PUSH2 0xE3 JUMPI DUP1 PUSH4 0xE8AB9CCC GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xF2472965 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xF2472965 EQ PUSH2 0x1343 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x13F4 JUMPI DUP1 PUSH4 0xF3993D11 EQ PUSH2 0x141A JUMPI PUSH2 0x2F3 JUMP JUMPDEST DUP1 PUSH4 0xE8AB9CCC EQ PUSH2 0x10EE JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x124C JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x127A JUMPI PUSH2 0x2F3 JUMP JUMPDEST DUP1 PUSH4 0xC7778BAA GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0xC7778BAA EQ PUSH2 0x1097 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x10B4 JUMPI DUP1 PUSH4 0xD0011D9D EQ PUSH2 0x10D1 JUMPI PUSH2 0x2F3 JUMP JUMPDEST DUP1 PUSH4 0xC3666C36 EQ PUSH2 0xF81 JUMPI DUP1 PUSH4 0xC4C2BFDC EQ PUSH2 0x108F JUMPI PUSH2 0x2F3 JUMP JUMPDEST DUP1 PUSH4 0x98650275 GT PUSH2 0x145 JUMPI DUP1 PUSH4 0xADEBF6F2 GT PUSH2 0x11F JUMPI DUP1 PUSH4 0xADEBF6F2 EQ PUSH2 0xE83 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0xEA0 JUMPI DUP1 PUSH4 0xBD85B039 EQ PUSH2 0xF64 JUMPI PUSH2 0x2F3 JUMP JUMPDEST DUP1 PUSH4 0x98650275 EQ PUSH2 0xE27 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0xE2F JUMPI DUP1 PUSH4 0xAA271E1A EQ PUSH2 0xE5D JUMPI PUSH2 0x2F3 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x176 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xDF1 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0xDF9 JUMPI DUP1 PUSH4 0x983B2D56 EQ PUSH2 0xE01 JUMPI PUSH2 0x2F3 JUMP JUMPDEST DUP1 PUSH4 0x80534934 EQ PUSH2 0xC3B JUMPI DUP1 PUSH4 0x8832E6E3 EQ PUSH2 0xD6E JUMPI PUSH2 0x2F3 JUMP JUMPDEST DUP1 PUSH4 0x42842E0E GT PUSH2 0x24A JUMPI DUP1 PUSH4 0x5B2BD79E GT PUSH2 0x1FE JUMPI DUP1 PUSH4 0x70A08231 GT PUSH2 0x1D8 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0xA99 JUMPI DUP1 PUSH4 0x73C8A958 EQ PUSH2 0xABF JUMPI DUP1 PUSH4 0x7E518EC8 EQ PUSH2 0xBCD JUMPI PUSH2 0x2F3 JUMP JUMPDEST DUP1 PUSH4 0x5B2BD79E EQ PUSH2 0x9EA JUMPI DUP1 PUSH4 0x5CFA9297 EQ PUSH2 0x9F2 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0xA7C JUMPI PUSH2 0x2F3 JUMP JUMPDEST DUP1 PUSH4 0x4E1273F4 GT PUSH2 0x22F JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x899 JUMPI DUP1 PUSH4 0x510B5158 EQ PUSH2 0x9A7 JUMPI DUP1 PUSH4 0x572B6C05 EQ PUSH2 0x9C4 JUMPI PUSH2 0x2F3 JUMP JUMPDEST DUP1 PUSH4 0x42842E0E EQ PUSH2 0x7E5 JUMPI DUP1 PUSH4 0x4684D7E9 EQ PUSH2 0x81B JUMPI PUSH2 0x2F3 JUMP JUMPDEST DUP1 PUSH4 0xD6A5BBB GT PUSH2 0x2AC JUMPI DUP1 PUSH4 0x23B872DD GT PUSH2 0x286 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x5C2 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x5F8 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x7B9 JUMPI PUSH2 0x2F3 JUMP JUMPDEST DUP1 PUSH4 0xD6A5BBB EQ PUSH2 0x455 JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x573 JUMPI DUP1 PUSH4 0x124D91E5 EQ PUSH2 0x590 JUMPI PUSH2 0x2F3 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 GT PUSH2 0x2DD JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x371 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x3EE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x427 JUMPI PUSH2 0x2F3 JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x2F8 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x336 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x324 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x30E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x14D4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x35D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x34C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x15C0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x379 PUSH2 0x15ED JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3B3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x39B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3E0 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x40B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x404 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1684 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x43D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1723 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x46B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x495 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x4C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x4E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x518 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x535 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x547 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x568 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x191F JUMP JUMPDEST PUSH2 0x379 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x589 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x19DA JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x5A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x19E5 JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x5D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1B38 JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x60E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x641 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x653 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x674 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x6C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x6F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x745 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x757 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x778 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1B5A SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x7CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1B6E JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x7FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1B99 JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x831 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x85B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x86D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x88E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1BB6 JUMP JUMPDEST PUSH2 0x957 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x8AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x8C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x8DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x8FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x919 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x92B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x94C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1BFE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x993 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x97B JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x40B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1D04 JUMP JUMPDEST PUSH2 0x35D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1D0F JUMP JUMPDEST PUSH2 0x379 PUSH2 0x1D88 JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xA08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xA3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xA71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1E16 JUMP JUMPDEST PUSH2 0x40B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1E63 JUMP JUMPDEST PUSH2 0x324 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1E6E JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xAD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xAEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xB22 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xB3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xB72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xB8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xBA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xBC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1EE7 JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xBFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xC30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1FD9 JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xC51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xC7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xCAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xCFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xD30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x2055 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xD84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xDB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xDC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xDE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2322 JUMP JUMPDEST PUSH2 0x40B PUSH2 0x2377 JUMP JUMPDEST PUSH2 0x379 PUSH2 0x2386 JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE17 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x23E7 JUMP JUMPDEST PUSH2 0x453 PUSH2 0x23FE JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xE45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x245C JUMP JUMPDEST PUSH2 0x35D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2466 JUMP JUMPDEST PUSH2 0x35D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x247B JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xEB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xEF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xF02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xF23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x2486 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x324 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2494 JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xF97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xFB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xFC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xFE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x1001 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1013 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x1034 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x1051 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1063 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x1084 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x250B JUMP JUMPDEST PUSH2 0x379 PUSH2 0x2653 JUMP JUMPDEST PUSH2 0x324 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2662 JUMP JUMPDEST PUSH2 0x379 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2701 JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2776 JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x1104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x111E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1130 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x1151 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x116E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1180 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x11A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x11BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x11D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x11F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x120E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1220 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x1241 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x278A JUMP JUMPDEST PUSH2 0x35D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x27A5 JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x1290 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x12CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x12E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x1302 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x27B8 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1359 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x1383 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x13B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x293C SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x140A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2BA9 JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1430 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x1463 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1475 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x1496 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x2C0F SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1531 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207A65726F2061646472657373000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x155B DUP3 PUSH32 0x0 PUSH2 0x2F06 JUMP JUMPDEST ISZERO PUSH2 0x1595 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 AND EQ PUSH2 0x1588 JUMPI PUSH1 0x0 PUSH2 0x158B JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x15BA JUMP JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0xA216A2B PUSH1 0xE3 SHL EQ DUP1 PUSH2 0x15E5 JUMPI POP PUSH2 0x15E5 DUP3 PUSH2 0x2F2C JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1679 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x164E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1679 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x165C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x16EE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D6578697374696E67204E46540000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO PUSH2 0x1719 JUMPI POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x15E8 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x15E8 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0x1784 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D6578697374696E67204E46540000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP1 DUP3 AND EQ ISZERO PUSH2 0x17E6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2073656C662D617070726F76616C0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x17F7 DUP2 PUSH2 0x17F2 PUSH2 0x2F51 JUMP JUMPDEST PUSH2 0x2F5B JUMP JUMPDEST PUSH2 0x1848 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D617070726F7665642073656E6465720000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1882 JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP3 AND ISZERO PUSH2 0x187D JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 SSTORE JUMPDEST PUSH2 0x18D8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 SHL DUP3 OR DUP1 DUP4 EQ PUSH2 0x18A2 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE JUMPDEST POP PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND OR SWAP1 SSTORE JUMPDEST DUP3 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x192F PUSH2 0x192A PUSH2 0x2F51 JUMP JUMPDEST PUSH2 0x2FA7 JUMP JUMPDEST PUSH2 0x19D1 DUP8 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP12 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP11 DUP3 MSTORE SWAP1 SWAP4 POP DUP11 SWAP3 POP DUP10 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F DUP11 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP9 DUP2 MSTORE SWAP3 POP DUP9 SWAP2 POP DUP8 SWAP1 DUP2 SWAP1 DUP5 ADD DUP4 DUP3 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3014 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x15E5 DUP3 PUSH2 0x339F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19EF PUSH2 0x2F51 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x19FD DUP6 DUP4 PUSH2 0x2F5B JUMP JUMPDEST SWAP1 POP PUSH2 0x1A08 DUP5 PUSH2 0x3472 JUMP JUMPDEST ISZERO PUSH2 0x1A1E JUMPI PUSH2 0x1A19 DUP6 DUP6 DUP6 DUP5 PUSH2 0x347C JUMP JUMPDEST PUSH2 0x1AD3 JUMP JUMPDEST PUSH2 0x1A48 DUP5 PUSH32 0x0 PUSH2 0x2F06 JUMP JUMPDEST ISZERO PUSH2 0x1A86 JUMPI PUSH2 0x1A5B DUP6 DUP6 DUP6 DUP5 PUSH1 0x0 PUSH2 0x35D0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DEF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP4 SWAP1 LOG4 PUSH2 0x1AD3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F74206120746F6B656E20696400000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1B55 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x379E JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1B67 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x38FA JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1B79 PUSH2 0x192A PUSH2 0x2F51 JUMP JUMPDEST PUSH2 0x1B95 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x3C44 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x1B55 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x1 PUSH2 0x379E JUMP JUMPDEST PUSH2 0x1BC1 PUSH2 0x192A PUSH2 0x2F51 JUMP JUMPDEST PUSH2 0x1B55 DUP4 DUP4 DUP4 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3DE9 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 DUP3 EQ PUSH2 0x1C54 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1C6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1C97 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP1 DUP7 EQ PUSH2 0x1CFA JUMPI PUSH2 0x1CDB DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x1CB3 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0x1CCF JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x14D4 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1CE7 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1C9D JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15E5 DUP3 PUSH2 0x416B JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x15E5 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1E0E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1DE3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1E0E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1DF1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH2 0x1E21 PUSH2 0x192A PUSH2 0x2F51 JUMP JUMPDEST PUSH2 0x1B67 DUP6 DUP6 DUP6 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x4205 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15E5 DUP3 PUSH2 0x4359 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1ECB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207A65726F2061646472657373000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1EF7 PUSH2 0x1EF2 PUSH2 0x2F51 JUMP JUMPDEST PUSH2 0x43C3 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x1F06 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x1F57 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x1FCF JUMPI PUSH2 0x1FC7 DUP9 DUP9 DUP4 DUP2 DUP2 LT PUSH2 0x1F70 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x1F8C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x1F9F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4487 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1F5A JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1FE4 PUSH2 0x1EF2 PUSH2 0x2F51 JUMP JUMPDEST PUSH2 0x1FF0 PUSH1 0xA DUP4 DUP4 PUSH2 0x5D25 JUMP JUMPDEST POP PUSH32 0x4B1DC5C136A3CE9FDED8DB0CE3D3366C58764EC3A8E4C2B9E52E4DDFE5EBBF7 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP6 POP SWAP1 SWAP4 POP POP POP POP LOG1 POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0x20AC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x20B6 PUSH2 0x2F51 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x20C4 DUP7 DUP4 PUSH2 0x2F5B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP7 DUP2 EQ PUSH2 0x2207 JUMPI PUSH1 0x0 DUP10 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x20E2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x20F5 DUP2 PUSH2 0x3472 JUMP JUMPDEST ISZERO PUSH2 0x211E JUMPI PUSH2 0x2119 DUP12 DUP3 DUP12 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x210B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP10 PUSH2 0x347C JUMP JUMPDEST PUSH2 0x21FE JUMP JUMPDEST PUSH2 0x2148 DUP2 PUSH32 0x0 PUSH2 0x2F06 JUMP JUMPDEST ISZERO PUSH2 0x1A86 JUMPI PUSH2 0x216E DUP12 DUP3 DUP12 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x215E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP10 PUSH1 0x1 PUSH2 0x35D0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 AND SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DEF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP4 SWAP1 LOG4 PUSH1 0x0 PUSH2 0x21C0 DUP3 PUSH32 0x0 PUSH2 0x44EE JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x21D3 JUMPI DUP1 SWAP6 POP PUSH1 0x1 SWAP5 POP PUSH2 0x21FC JUMP JUMPDEST DUP6 DUP2 EQ PUSH2 0x21F5 JUMPI PUSH2 0x21E5 DUP13 DUP8 DUP8 PUSH2 0x4504 JUMP JUMPDEST SWAP5 POP PUSH1 0x1 SWAP4 SWAP3 SWAP1 SWAP3 ADD SWAP2 DUP5 PUSH2 0x21FC JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SWAP5 POP JUMPDEST POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x20CD JUMP JUMPDEST POP DUP3 ISZERO PUSH2 0x223D JUMPI PUSH2 0x2219 DUP10 DUP5 DUP5 PUSH2 0x4504 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP2 DUP4 ADD SWAP2 DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP12 DUP12 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x22C3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x22AB JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2302 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x22EA JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x232D PUSH2 0x192A PUSH2 0x2F51 JUMP JUMPDEST PUSH2 0x2371 DUP5 DUP5 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH1 0x1 SWAP3 POP PUSH2 0x3C44 SWAP2 POP POP JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1679 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x164E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1679 JUMP JUMPDEST PUSH2 0x23F2 PUSH2 0x1EF2 PUSH2 0x2F51 JUMP JUMPDEST PUSH2 0x23FB DUP2 PUSH2 0x4544 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2408 PUSH2 0x2F51 JUMP JUMPDEST SWAP1 POP PUSH2 0x2413 DUP2 PUSH2 0x2FA7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xE94479A9F7E1952CC78F2D6BAAB678ADC1B772D936C6583DEF489E524CB66692 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x1B95 DUP3 DUP3 PUSH2 0x4590 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15E5 DUP3 PUSH2 0x3472 JUMP JUMPDEST PUSH2 0x2371 DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x379E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24C0 DUP3 PUSH32 0x0 PUSH2 0x2F06 JUMP JUMPDEST ISZERO PUSH2 0x24F6 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x24E9 JUMPI PUSH1 0x1 PUSH2 0x24EC JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x15E8 JUMP JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x2516 PUSH2 0x1EF2 PUSH2 0x2F51 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x2525 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x2576 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x1FCF JUMPI DUP6 DUP6 DUP3 DUP2 DUP2 LT PUSH2 0x258C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD ADDRESS DUP11 DUP11 DUP6 DUP2 DUP2 LT PUSH2 0x25B7 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x25D3 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2630 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2644 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x2579 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x265D PUSH2 0x4671 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x268E DUP3 PUSH32 0x0 PUSH2 0x2F06 JUMP JUMPDEST PUSH2 0x26D7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x125B9D995B9D1BDC9E4E881B9BDD08185B88139195 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x15E5 DUP3 PUSH32 0x0 PUSH2 0x44EE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x276D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D6578697374696E67204E46540000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x15E5 DUP3 PUSH2 0x19DA JUMP JUMPDEST PUSH2 0x2781 PUSH2 0x1EF2 PUSH2 0x2F51 JUMP JUMPDEST PUSH2 0x23FB DUP2 PUSH2 0x46B5 JUMP JUMPDEST PUSH2 0x2795 PUSH2 0x192A PUSH2 0x2F51 JUMP JUMPDEST PUSH2 0x1FCF DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0x4817 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27B1 DUP4 DUP4 PUSH2 0x4B72 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27C2 PUSH2 0x2F51 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x281F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220746F207A65726F0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x282B DUP8 DUP4 PUSH2 0x2F5B JUMP JUMPDEST SWAP1 POP PUSH2 0x2836 DUP6 PUSH2 0x3472 JUMP JUMPDEST ISZERO PUSH2 0x284D JUMPI PUSH2 0x2848 DUP8 DUP8 DUP8 DUP8 DUP6 PUSH2 0x4BA0 JUMP JUMPDEST PUSH2 0x28BB JUMP JUMPDEST PUSH2 0x2877 DUP6 PUSH32 0x0 PUSH2 0x2F06 JUMP JUMPDEST ISZERO PUSH2 0x1A86 JUMPI PUSH2 0x288B DUP8 DUP8 DUP8 DUP8 DUP6 PUSH1 0x0 PUSH2 0x4D0B JUMP JUMPDEST DUP5 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DEF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP9 DUP9 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x292A DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4EC1 JUMP JUMPDEST ISZERO PUSH2 0x19D1 JUMPI PUSH2 0x19D1 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x4EC7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2946 PUSH2 0x2F51 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2954 DUP5 DUP4 PUSH2 0x2F5B JUMP JUMPDEST DUP4 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2972 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x299C JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST DUP5 DUP2 EQ PUSH2 0x2A93 JUMPI PUSH1 0x0 DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x29BA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x1 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x29D2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x29FF DUP11 DUP3 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x29EF JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP11 PUSH1 0x1 PUSH2 0x35D0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DEF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP4 SWAP1 LOG4 PUSH1 0x0 PUSH2 0x2A51 DUP3 PUSH32 0x0 PUSH2 0x44EE JUMP JUMPDEST SWAP1 POP DUP5 PUSH2 0x2A64 JUMPI DUP1 SWAP5 POP PUSH1 0x1 SWAP4 POP PUSH2 0x2A89 JUMP JUMPDEST DUP5 DUP2 EQ PUSH2 0x2A82 JUMPI PUSH2 0x2A76 DUP12 DUP7 DUP7 PUSH2 0x4504 JUMP JUMPDEST DUP1 SWAP5 POP PUSH1 0x1 SWAP4 POP PUSH2 0x2A89 JUMP JUMPDEST DUP4 PUSH1 0x1 ADD SWAP4 POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x29A5 JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x2AC5 JUMPI PUSH2 0x2AA5 DUP9 DUP4 DUP4 PUSH2 0x4504 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP6 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP11 DUP8 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2B4B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2B33 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2B8A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2B72 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2BB4 PUSH2 0x1EF2 PUSH2 0x2F51 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 DUP3 OR DUP1 DUP5 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 SWAP2 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2C6A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220746F207A65726F0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2C74 PUSH2 0x2F51 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2C82 DUP6 DUP4 PUSH2 0x2F5B JUMP JUMPDEST DUP4 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2CA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2CCA JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST DUP5 DUP2 EQ PUSH2 0x2DBA JUMPI PUSH1 0x0 DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2CE8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x1 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2D00 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x2D1C DUP12 DUP12 DUP4 PUSH1 0x1 DUP12 PUSH1 0x1 PUSH2 0x4D0B JUMP JUMPDEST DUP1 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DEF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x0 PUSH2 0x2D77 DUP3 PUSH32 0x0 PUSH2 0x44EE JUMP JUMPDEST SWAP1 POP DUP5 PUSH2 0x2D8A JUMPI DUP1 SWAP5 POP PUSH1 0x1 SWAP4 POP PUSH2 0x2DB0 JUMP JUMPDEST DUP5 DUP2 EQ PUSH2 0x2DA9 JUMPI PUSH2 0x2D9D DUP13 DUP13 DUP8 DUP8 PUSH2 0x5038 JUMP JUMPDEST DUP1 SWAP5 POP PUSH1 0x1 SWAP4 POP PUSH2 0x2DB0 JUMP JUMPDEST DUP4 PUSH1 0x1 ADD SWAP4 POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x2CD3 JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x2DD8 JUMPI PUSH2 0x2DCD DUP10 DUP10 DUP5 DUP5 PUSH2 0x5038 JUMP JUMPDEST PUSH2 0x2DD8 DUP10 DUP10 DUP7 PUSH2 0x508C JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2DF4 PUSH2 0x2F51 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP11 DUP8 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2E64 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2E4C JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2EA3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2E8B JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x2ECA DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4EC1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2EDA JUMPI POP PUSH2 0x2EDA DUP9 PUSH2 0x50D7 JUMP JUMPDEST ISZERO PUSH2 0x2EFB JUMPI PUSH2 0x2EFB DUP10 DUP10 DUP10 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x516D JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xFF SHL DUP4 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x27B1 JUMPI POP PUSH2 0x2F21 DUP3 PUSH2 0x52D2 JUMP JUMPDEST SWAP1 SWAP3 AND ISZERO ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x18167C6D PUSH1 0xE2 SHL EQ DUP1 PUSH2 0x15E5 JUMPI POP PUSH2 0x15E5 DUP3 PUSH2 0x52E3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x265D PUSH2 0x533E JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x27B1 JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x23FB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D696E746572526F6C653A206E6F742061204D696E7465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x3069 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH23 0x496E76656E746F72793A206D696E7420746F207A65726F PUSH1 0x48 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 MLOAD DUP3 MLOAD DUP2 EQ PUSH2 0x30C0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP5 DUP2 EQ PUSH2 0x324D JUMPI PUSH1 0x0 DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x30DC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x30F4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x3107 DUP3 PUSH2 0x3472 JUMP JUMPDEST ISZERO PUSH2 0x311C JUMPI PUSH2 0x3117 DUP12 DUP4 DUP4 PUSH2 0x549E JUMP JUMPDEST PUSH2 0x3243 JUMP JUMPDEST PUSH2 0x3146 DUP3 PUSH32 0x0 PUSH2 0x2F06 JUMP JUMPDEST ISZERO PUSH2 0x1A86 JUMPI PUSH2 0x3158 DUP12 DUP4 DUP4 PUSH1 0x1 PUSH2 0x5588 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DEF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP3 SWAP1 LOG4 PUSH1 0x0 PUSH2 0x31AA DUP4 PUSH32 0x0 PUSH2 0x44EE JUMP JUMPDEST SWAP1 POP DUP7 PUSH2 0x31BD JUMPI DUP1 SWAP7 POP PUSH1 0x1 SWAP6 POP PUSH2 0x3241 JUMP JUMPDEST DUP7 DUP2 EQ PUSH2 0x323A JUMPI DUP6 PUSH1 0x2 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP15 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP6 PUSH1 0x3 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 SWAP7 POP DUP6 DUP6 ADD SWAP5 POP PUSH1 0x1 SWAP6 POP PUSH2 0x3241 JUMP JUMPDEST DUP6 PUSH1 0x1 ADD SWAP6 POP JUMPDEST POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x30C7 JUMP JUMPDEST POP DUP3 ISZERO PUSH2 0x32A2 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE DUP7 DUP5 MSTORE PUSH1 0x3 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE DUP4 MSTORE PUSH1 0x8 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD SWAP2 DUP4 ADD SWAP2 DUP3 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 PUSH2 0x32B6 PUSH2 0x2F51 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP11 DUP11 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3326 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x330E JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3365 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x334D JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x338C DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4EC1 JUMP JUMPDEST ISZERO PUSH2 0x1FCF JUMPI PUSH2 0x1FCF PUSH1 0x0 DUP10 DUP10 DUP10 DUP10 PUSH2 0x516D JUMP JUMPDEST PUSH1 0x60 PUSH1 0xA PUSH2 0x33AC DUP4 PUSH2 0x56D8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x340A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x33E8 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 DUP3 ADD SWAP2 PUSH2 0x340A JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x33F6 JUMPI JUMPDEST POP POP DUP3 MLOAD PUSH1 0x20 DUP5 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3436 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3417 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xFF SHL AND ISZERO SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x34C6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x496E76656E746F72793A207A65726F2076616C7565 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x3518 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D617070726F7665642073656E6465720000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x3590 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F7420656E6F7567682062616C616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP9 AND DUP4 MSTORE SWAP7 DUP2 MSTORE DUP7 DUP3 KECCAK256 SWAP3 DUP6 SWAP1 SUB SWAP1 SWAP3 SSTORE SWAP4 DUP5 MSTORE PUSH1 0x3 SWAP1 MSTORE POP SWAP2 SWAP1 KECCAK256 DUP1 SLOAD SWAP2 SWAP1 SWAP2 SUB SWAP1 SSTORE JUMP JUMPDEST DUP3 PUSH1 0x1 EQ PUSH2 0x3625 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2077726F6E67204E46542076616C7565000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP1 DUP3 AND EQ PUSH2 0x3694 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D6F776E6564204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x3725 JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x36D4 JUMPI POP PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x36C9 PUSH2 0x2F51 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x3725 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D617070726F7665642073656E6465720000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xDEAD PUSH1 0xF0 SHL SWAP1 SSTORE DUP2 PUSH2 0x3796 JUMPI PUSH2 0x3775 DUP7 PUSH2 0x376E DUP8 PUSH32 0x0 PUSH2 0x44EE JUMP JUMPDEST PUSH1 0x1 PUSH2 0x4504 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x37F9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220746F207A65726F0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3803 PUSH2 0x2F51 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3811 DUP8 DUP4 PUSH2 0x2F5B JUMP JUMPDEST SWAP1 POP PUSH2 0x3823 DUP8 DUP8 DUP8 PUSH1 0x1 DUP6 PUSH1 0x0 PUSH2 0x4D0B JUMP JUMPDEST DUP5 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DEF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP9 PUSH1 0x1 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x38C2 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4EC1 JUMP JUMPDEST ISZERO PUSH2 0x19D1 JUMPI PUSH2 0x38D0 DUP7 PUSH2 0x50D7 JUMP JUMPDEST ISZERO PUSH2 0x38E8 JUMPI PUSH2 0x38E3 DUP8 DUP8 DUP8 PUSH1 0x1 DUP9 PUSH2 0x4EC7 JUMP JUMPDEST PUSH2 0x19D1 JUMP JUMPDEST DUP3 ISZERO PUSH2 0x19D1 JUMPI PUSH2 0x19D1 DUP8 DUP8 DUP8 DUP8 PUSH2 0x57CB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x3955 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220746F207A65726F0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 MLOAD DUP3 MLOAD DUP2 EQ PUSH2 0x39AC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x39B6 PUSH2 0x2F51 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x39C4 DUP9 DUP4 PUSH2 0x2F5B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP7 DUP2 EQ PUSH2 0x3B13 JUMPI PUSH1 0x0 DUP11 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x39E2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x39F5 DUP2 PUSH2 0x3472 JUMP JUMPDEST ISZERO PUSH2 0x3A1F JUMPI PUSH2 0x3A1A DUP14 DUP14 DUP4 DUP14 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x3A0C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP11 PUSH2 0x4BA0 JUMP JUMPDEST PUSH2 0x3B0A JUMP JUMPDEST PUSH2 0x3A49 DUP2 PUSH32 0x0 PUSH2 0x2F06 JUMP JUMPDEST ISZERO PUSH2 0x1A86 JUMPI PUSH2 0x3A70 DUP14 DUP14 DUP4 DUP14 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x3A60 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP11 PUSH1 0x1 PUSH2 0x4D0B JUMP JUMPDEST DUP1 DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP15 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DEF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x0 PUSH2 0x3ACB DUP3 PUSH32 0x0 PUSH2 0x44EE JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x3ADE JUMPI DUP1 SWAP6 POP PUSH1 0x1 SWAP5 POP PUSH2 0x3B08 JUMP JUMPDEST DUP6 DUP2 EQ PUSH2 0x3B01 JUMPI PUSH2 0x3AF1 DUP15 DUP15 DUP9 DUP9 PUSH2 0x5038 JUMP JUMPDEST SWAP5 POP PUSH1 0x1 SWAP4 SWAP3 SWAP1 SWAP3 ADD SWAP2 DUP5 PUSH2 0x3B08 JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SWAP5 POP JUMPDEST POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x39CD JUMP JUMPDEST POP DUP3 ISZERO PUSH2 0x3B33 JUMPI PUSH2 0x3B26 DUP12 DUP12 DUP6 DUP6 PUSH2 0x5038 JUMP JUMPDEST DUP2 ADD PUSH2 0x3B33 DUP12 DUP12 DUP4 PUSH2 0x508C JUMP JUMPDEST DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3B4F PUSH2 0x2F51 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP13 DUP13 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3BBF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3BA7 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3BFE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3BE6 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x3C25 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4EC1 JUMP JUMPDEST ISZERO PUSH2 0x3C37 JUMPI PUSH2 0x3C37 DUP12 DUP12 DUP12 DUP12 DUP12 PUSH2 0x516D JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x3C99 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH23 0x496E76656E746F72793A206D696E7420746F207A65726F PUSH1 0x48 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3CC3 DUP4 PUSH32 0x0 PUSH2 0x2F06 JUMP JUMPDEST PUSH2 0x3D0C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x125B9D995B9D1BDC9E4E881B9BDD08185B88139195 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3D1A DUP5 DUP5 PUSH1 0x1 PUSH1 0x0 PUSH2 0x5588 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DEF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP3 SWAP1 LOG4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 PUSH2 0x3D54 PUSH2 0x2F51 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP7 PUSH1 0x1 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x3DAF DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4EC1 JUMP JUMPDEST ISZERO PUSH2 0x2371 JUMPI PUSH2 0x3DBD DUP5 PUSH2 0x50D7 JUMP JUMPDEST ISZERO PUSH2 0x3DD6 JUMPI PUSH2 0x3DD1 PUSH1 0x0 DUP6 DUP6 PUSH1 0x1 DUP7 PUSH2 0x4EC7 JUMP JUMPDEST PUSH2 0x2371 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2371 JUMPI PUSH2 0x2371 PUSH1 0x0 DUP6 DUP6 DUP6 PUSH2 0x57CB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3E3E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH23 0x496E76656E746F72793A206D696E7420746F207A65726F PUSH1 0x48 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3E59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3E83 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST DUP5 DUP2 EQ PUSH2 0x400F JUMPI PUSH1 0x0 DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3EA1 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x3EDE PUSH32 0x0 DUP3 PUSH2 0x2F06 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x3F27 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x125B9D995B9D1BDC9E4E881B9BDD08185B88139195 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3F35 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x3F4E DUP9 DUP3 PUSH1 0x1 DUP1 PUSH2 0x5588 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DEF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP3 SWAP1 LOG4 PUSH1 0x0 PUSH2 0x3FA0 DUP3 PUSH32 0x0 PUSH2 0x44EE JUMP JUMPDEST SWAP1 POP DUP5 PUSH2 0x3FB3 JUMPI DUP1 SWAP5 POP PUSH1 0x1 SWAP4 POP PUSH2 0x4005 JUMP JUMPDEST DUP5 DUP2 EQ PUSH2 0x3FFE JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP9 ADD SWAP1 SSTORE SWAP7 DUP3 MSTORE PUSH1 0x3 SWAP1 MSTORE SWAP5 SWAP1 SWAP5 KECCAK256 DUP1 SLOAD SWAP1 SWAP4 ADD SWAP1 SWAP3 SSTORE PUSH1 0x1 SWAP2 DUP4 PUSH2 0x4005 JUMP JUMPDEST DUP4 PUSH1 0x1 ADD SWAP4 POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x3E8C JUMP JUMPDEST POP PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE DUP6 DUP5 MSTORE PUSH1 0x3 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE DUP1 DUP5 MSTORE PUSH1 0x8 SWAP1 SWAP3 MSTORE DUP3 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE SWAP1 PUSH2 0x4063 PUSH2 0x2F51 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP9 DUP8 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x40D3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x40BB JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4112 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x40FA JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x4139 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4EC1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x4149 JUMPI POP PUSH2 0x4149 DUP7 PUSH2 0x50D7 JUMP JUMPDEST ISZERO PUSH2 0x3796 JUMPI PUSH2 0x3796 PUSH1 0x0 DUP8 DUP8 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x516D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4197 DUP3 PUSH32 0x0 PUSH2 0x2F06 JUMP JUMPDEST ISZERO PUSH2 0x41E9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F74206120636F6C6C656374696F6E0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x425A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH23 0x496E76656E746F72793A206D696E7420746F207A65726F PUSH1 0x48 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4264 PUSH2 0x2F51 JUMP JUMPDEST SWAP1 POP PUSH2 0x426F DUP5 PUSH2 0x3472 JUMP JUMPDEST ISZERO PUSH2 0x4284 JUMPI PUSH2 0x427F DUP6 DUP6 DUP6 PUSH2 0x549E JUMP JUMPDEST PUSH2 0x42E7 JUMP JUMPDEST PUSH2 0x42AE DUP5 PUSH32 0x0 PUSH2 0x2F06 JUMP JUMPDEST ISZERO PUSH2 0x1A86 JUMPI PUSH2 0x42C0 DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x5588 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DEF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP3 SWAP1 LOG4 JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND SWAP4 PUSH1 0x0 SWAP4 SWAP2 DUP7 AND SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 PUSH2 0x4346 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4EC1 JUMP JUMPDEST ISZERO PUSH2 0x1B67 JUMPI PUSH2 0x1B67 PUSH1 0x0 DUP7 DUP7 DUP7 DUP7 PUSH2 0x4EC7 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x15E5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D6578697374696E67204E46540000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x43FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4410 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4426 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x23FB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6F7420746865206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x1B55 SWAP1 DUP5 SWAP1 PUSH2 0x5934 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44F9 DUP3 PUSH2 0x52D2 JUMP JUMPDEST NOT DUP4 AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP7 AND DUP4 MSTORE SWAP5 DUP2 MSTORE DUP5 DUP3 KECCAK256 DUP1 SLOAD DUP5 SWAP1 SUB SWAP1 SSTORE SWAP3 DUP2 MSTORE PUSH1 0x3 SWAP1 SWAP3 MSTORE SWAP2 SWAP1 KECCAK256 DUP1 SLOAD SWAP2 SWAP1 SWAP2 SUB SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x459A PUSH2 0x2F51 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x4603 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2073656C662D617070726F76616C0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP9 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP8 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x467B PUSH2 0x5B17 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x46DF DUP2 PUSH32 0x0 PUSH2 0x2F06 JUMP JUMPDEST ISZERO PUSH2 0x4731 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F74206120636F6C6C656374696F6E0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x479B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206578697374696E6720636F6C6C656374696F6E0000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x47A3 PUSH2 0x2F51 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x47E5 DUP2 PUSH2 0x3472 JUMP JUMPDEST ISZERO ISZERO DUP2 PUSH32 0x4EBF8AD0DF535BA5E487BC9CB27FE44120CA81C3A95D3EBA79C0BD1DF2AB2D5D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP JUMP JUMPDEST DUP7 DUP6 DUP2 EQ DUP1 ISZERO PUSH2 0x4826 JUMPI POP DUP1 DUP5 EQ JUMPDEST PUSH2 0x4877 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4881 PUSH2 0x2F51 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 EQ PUSH2 0x3C37 JUMPI PUSH1 0x0 DUP12 DUP12 DUP4 DUP2 DUP2 LT PUSH2 0x489B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x490F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH23 0x496E76656E746F72793A206D696E7420746F207A65726F PUSH1 0x48 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP11 DUP11 DUP5 DUP2 DUP2 LT PUSH2 0x491D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP PUSH1 0x0 DUP10 DUP10 DUP6 DUP2 DUP2 LT PUSH2 0x4934 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP PUSH2 0x4946 DUP3 PUSH2 0x3472 JUMP JUMPDEST ISZERO PUSH2 0x4A03 JUMPI PUSH2 0x4956 DUP4 DUP4 DUP4 PUSH2 0x549E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP4 PUSH1 0x0 SWAP4 SWAP2 DUP11 AND SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 PUSH2 0x49B5 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4EC1 JUMP JUMPDEST ISZERO PUSH2 0x49FE JUMPI PUSH2 0x49FE PUSH1 0x0 DUP5 DUP5 DUP5 DUP13 DUP13 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x4EC7 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x4B64 JUMP JUMPDEST PUSH2 0x4A2D DUP3 PUSH32 0x0 PUSH2 0x2F06 JUMP JUMPDEST ISZERO PUSH2 0x1A86 JUMPI PUSH2 0x4A3F DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x5588 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DEF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP3 SWAP1 LOG4 PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP4 PUSH1 0x0 SWAP4 SWAP2 DUP11 AND SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 PUSH2 0x4AC4 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4EC1 JUMP JUMPDEST ISZERO PUSH2 0x49FE JUMPI PUSH2 0x4AD2 DUP4 PUSH2 0x50D7 JUMP JUMPDEST ISZERO PUSH2 0x4B21 JUMPI PUSH2 0x4B1C PUSH1 0x0 DUP5 DUP5 PUSH1 0x1 DUP13 DUP13 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x4EC7 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x49FE JUMP JUMPDEST PUSH2 0x49FE PUSH1 0x0 DUP5 DUP5 DUP12 DUP12 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x57CB SWAP3 POP POP POP JUMP JUMPDEST POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x4886 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x4BF2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D617070726F7665642073656E6465720000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH2 0x4C3C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x496E76656E746F72793A207A65726F2076616C7565 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x4CB4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F7420656E6F7567682062616C616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x3796 JUMPI PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP9 DUP10 AND DUP8 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP6 KECCAK256 SWAP2 DUP5 SWAP1 SUB SWAP1 SWAP2 SSTORE SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP JUMP JUMPDEST DUP3 PUSH1 0x1 EQ PUSH2 0x4D60 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2077726F6E67204E46542076616C7565000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP1 DUP3 AND EQ PUSH2 0x4DCF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D6F776E6564204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x4E60 JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x4E0F JUMPI POP PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4E04 PUSH2 0x2F51 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x4E60 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D617070726F7665642073656E6465720000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 SSTORE DUP2 PUSH2 0x19D1 JUMPI PUSH2 0x4E8B DUP8 DUP8 PUSH1 0x1 PUSH2 0x508C JUMP JUMPDEST PUSH2 0x19D1 DUP8 DUP8 PUSH2 0x4EBA DUP9 PUSH32 0x0 PUSH2 0x44EE JUMP JUMPDEST PUSH1 0x1 PUSH2 0x5038 JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH4 0xF23A6E61 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH4 0xF23A6E61 PUSH2 0x4EE6 PUSH2 0x2F51 JUMP JUMPDEST DUP9 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4F60 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4F48 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x4F8D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4FB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4FC4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4FDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x1B67 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220726566757365640000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2371 JUMPI PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND DUP6 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE SWAP3 SWAP1 SWAP4 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1B55 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD DUP6 SWAP1 SUB SWAP1 SSTORE SWAP2 DUP5 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x2711897 PUSH1 0xE5 SHL PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL OR DUP2 MSTORE DUP3 MLOAD SWAP4 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE SWAP5 DUP6 SWAP5 DUP6 SWAP5 SWAP1 SWAP4 SWAP3 SWAP1 DUP2 DUP4 DUP6 DUP12 PUSH2 0x2710 STATICCALL SWAP6 POP DUP1 MLOAD SWAP5 POP POP POP POP PUSH1 0x9E GAS GT PUSH2 0x515A JUMPI INVALID JUMPDEST DUP3 DUP1 ISZERO PUSH2 0x5164 JUMPI POP DUP2 JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0xBC197C81 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH4 0xBC197C81 PUSH2 0x518C PUSH2 0x2F51 JUMP JUMPDEST DUP9 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5205 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x51ED JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5244 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x522C JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5280 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5268 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x52AD JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4FB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH2 0x100 SWAP2 SWAP1 SWAP2 SUB SHL PUSH1 0x0 NOT ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x5314 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x532F JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0xF3993D11 PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x15E5 JUMPI POP PUSH2 0x15E5 DUP3 PUSH2 0x5C7A JUMP JUMPDEST PUSH1 0x0 CALLER DUP2 PUSH2 0x534A PUSH2 0x5CFE JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x53BD JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x53CB JUMPI SWAP2 POP PUSH2 0x1681 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x548A JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 DUP3 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x545D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5471 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5487 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x5498 JUMPI SWAP2 POP PUSH2 0x1681 SWAP1 POP JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x54E8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x496E76656E746F72793A207A65726F2076616C7565 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 ADD DUP2 DUP2 GT PUSH2 0x554E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20737570706C79206F766572666C6F77000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x2 DUP2 MSTORE DUP2 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP7 AND DUP6 MSTORE SWAP5 SWAP1 SWAP5 MSTORE POP SWAP2 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE JUMP JUMPDEST DUP2 PUSH1 0x1 EQ PUSH2 0x55DD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2077726F6E67204E46542076616C7565000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x563E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206578697374696E672F6275726E74204E4654000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 SSTORE DUP1 PUSH2 0x2371 JUMPI PUSH1 0x0 PUSH2 0x5689 DUP5 PUSH32 0x0 PUSH2 0x44EE JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 DUP2 ADD SWAP1 SWAP2 SSTORE PUSH1 0x2 DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP6 MSTORE DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE PUSH1 0x8 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x56FD JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x3 PUSH1 0xFC SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x15E8 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x5715 JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP3 DIV SWAP2 POP PUSH2 0x5701 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x572E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x5759 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP DUP6 SWAP4 POP SWAP1 POP PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP4 ISZERO PUSH2 0x57C2 JUMPI PUSH1 0xA DUP5 MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 DUP1 PUSH1 0x1 SWAP1 SUB SWAP4 POP DUP2 MLOAD DUP2 LT PUSH2 0x5788 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0x5765 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0xA85BD01 PUSH1 0xE1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH4 0x150B7A02 PUSH2 0x57EA PUSH2 0x2F51 JUMP JUMPDEST DUP8 DUP7 DUP7 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x585D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5845 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x588A JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x58AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x58C0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x58D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x2371 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220726566757365640000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH2 0x5947 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x4EC1 JUMP JUMPDEST PUSH2 0x5998 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206E6F6E2D636F6E7472616374000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x59D5 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x59B6 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x5A37 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x5A3C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0x5ABB JUMPI DUP1 MLOAD ISZERO PUSH2 0x5AB6 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5A63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x5AB6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1B67 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x5B0E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST CALLDATASIZE PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 EQ DUP1 PUSH2 0x5B83 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x5B9A JUMPI PUSH2 0x5B90 PUSH2 0x5D0A JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0x5C76 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x5C60 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 PUSH2 0x5BE5 PUSH2 0x5CFE JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5C33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5C47 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5C5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x5C6D JUMPI PUSH2 0x5B90 PUSH2 0x5D0A JUMP JUMPDEST PUSH1 0x0 CALLDATASIZE SWAP3 POP SWAP3 POP POP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x5CAB JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x6CDB3D13 PUSH1 0xE1 SHL EQ JUMPDEST DUP1 PUSH2 0x5CC6 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x3A24D07 PUSH1 0xE2 SHL EQ JUMPDEST DUP1 PUSH2 0x5CE1 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x4E72E23 PUSH1 0xE1 SHL EQ JUMPDEST DUP1 PUSH2 0x15E5 JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xBD85B039 PUSH1 0xE0 SHL EQ SWAP1 JUMP JUMPDEST PUSH1 0x13 NOT CALLDATASIZE ADD CALLDATALOAD PUSH1 0x60 SHR SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 PUSH2 0x5D1D PUSH1 0x13 NOT DUP4 ADD DUP3 DUP5 DUP2 PUSH2 0x5DC6 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP1 SWAP2 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x5D5B JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x5DA1 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x5D74 JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x5DA1 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x5DA1 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x5DA1 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x5D86 JUMP JUMPDEST POP PUSH2 0x5DAD SWAP3 SWAP2 POP PUSH2 0x5DB1 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x5DAD JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x5DB2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x5DD5 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x5DE1 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP INVALID 0xDD CALLCODE MSTORE 0xAD SHL 0xE2 0xC8 SWAP12 PUSH10 0xC2B068FC378DAA952BA7 CALL PUSH4 0xC4A11628 CREATE2 GAS 0x4D CREATE2 0x23 0xB3 0xEF LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MULMOD PUSH1 0x82 0xEA 0xBD JUMPDEST NOT 0xC CREATE2 0x23 0x2A 0xC4 DUP5 DIV 0x4A PUSH6 0x896B14C5F057 CODECOPY 0xB6 PUSH31 0x942BD9A1D2A62064736F6C6343000706003300000000000000000000000000 ",
              "sourceMap": "1397:5159:25:-:0;;;1667:348;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1667:348:25;;;;;;;;;;;;817:176:20;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;817:176:20;;;;;;;-1:-1:-1;960:15:2;;-1:-1:-1;;;;;;960:15:2;1997:10:25;960:15:2;;;;;990:40;;1667:348:25;;;;;;817:176:20;;1667:348:25;;817:176:20;;;;1667:348:25;;;;;;;;1997:10;;;;-1:-1:-1;990:40:2;;-1:-1:-1;;990:40:2;-1:-1:-1;;;;;;;443:40:33;;;;;;;;493:38;;;;;;2448:25:10;;;;;:55;;;2500:3;2477:20;:26;2448:55;2440:96;;;;;-1:-1:-1;;;2440:96:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;2546:44;;1973:13:19;;::::1;::::0;:5:::1;::::0;:13:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;1996:17:19;;::::1;::::0;:7:::1;::::0;:17:::1;::::0;::::1;::::0;::::1;:::i;:::-;;1804:216:::0;;;817:176:20;;;476:18:1::1;487:6;476:10;;;:18;;:::i;:::-;422:79:::0;1667:348:25;;;1397:5159;;1252:122:1;-1:-1:-1;;;;;1308:17:1;;;;;;:8;:17;;;;;;:24;;-1:-1:-1;;1308:24:1;1328:4;1308:24;;;1347:20;;;1308:17;1347:20;1252:122;:::o;1397:5159:25:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1397:5159:25;;;-1:-1:-1;1397:5159:25;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:379:34",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:34",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "144:233:34",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "182:32:34",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "191:9:34"
                                        },
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "202:9:34"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "184:6:34"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "184:28:34"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "184:28:34"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "160:10:34"
                                  },
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "172:8:34"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "157:2:34"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "157:24:34"
                              },
                              "nodeType": "YulIf",
                              "src": "154:2:34"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "247:32:34",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "256:9:34"
                                        },
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "267:9:34"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "249:6:34"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "249:28:34"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "249:28:34"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "229:8:34"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "239:6:34"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "226:2:34"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "226:20:34"
                              },
                              "nodeType": "YulIf",
                              "src": "223:2:34"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "288:36:34",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "305:6:34"
                                  },
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "313:10:34"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "301:3:34"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "301:23:34"
                              },
                              "variableNames": [
                                {
                                  "name": "offsetOut",
                                  "nodeType": "YulIdentifier",
                                  "src": "288:9:34"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "333:38:34",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "350:8:34"
                                  },
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "360:10:34"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "346:3:34"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "346:25:34"
                              },
                              "variableNames": [
                                {
                                  "name": "lengthOut",
                                  "nodeType": "YulIdentifier",
                                  "src": "333:9:34"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "calldata_array_index_range_access_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "78:6:34",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "86:6:34",
                            "type": ""
                          },
                          {
                            "name": "startIndex",
                            "nodeType": "YulTypedName",
                            "src": "94:10:34",
                            "type": ""
                          },
                          {
                            "name": "endIndex",
                            "nodeType": "YulTypedName",
                            "src": "106:8:34",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "offsetOut",
                            "nodeType": "YulTypedName",
                            "src": "119:9:34",
                            "type": ""
                          },
                          {
                            "name": "lengthOut",
                            "nodeType": "YulTypedName",
                            "src": "130:9:34",
                            "type": ""
                          }
                        ],
                        "src": "14:363:34"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function calldata_array_index_range_access_t_bytes_calldata_ptr(offset, length, startIndex, endIndex) -> offsetOut, lengthOut\n    {\n        if gt(startIndex, endIndex) { revert(offsetOut, offsetOut) }\n        if gt(endIndex, length) { revert(offsetOut, offsetOut) }\n        offsetOut := add(offset, startIndex)\n        lengthOut := sub(endIndex, startIndex)\n    }\n}",
                  "id": 34,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "771": [
                  {
                    "length": 32,
                    "start": 5431
                  },
                  {
                    "length": 32,
                    "start": 6692
                  },
                  {
                    "length": 32,
                    "start": 8484
                  },
                  {
                    "length": 32,
                    "start": 8604
                  },
                  {
                    "length": 32,
                    "start": 9372
                  },
                  {
                    "length": 32,
                    "start": 9834
                  },
                  {
                    "length": 32,
                    "start": 9949
                  },
                  {
                    "length": 32,
                    "start": 10323
                  },
                  {
                    "length": 32,
                    "start": 10797
                  },
                  {
                    "length": 32,
                    "start": 11603
                  },
                  {
                    "length": 32,
                    "start": 12578
                  },
                  {
                    "length": 32,
                    "start": 12678
                  },
                  {
                    "length": 32,
                    "start": 14154
                  },
                  {
                    "length": 32,
                    "start": 14885
                  },
                  {
                    "length": 32,
                    "start": 15015
                  },
                  {
                    "length": 32,
                    "start": 15519
                  },
                  {
                    "length": 32,
                    "start": 16048
                  },
                  {
                    "length": 32,
                    "start": 16252
                  },
                  {
                    "length": 32,
                    "start": 16755
                  },
                  {
                    "length": 32,
                    "start": 17034
                  },
                  {
                    "length": 32,
                    "start": 18107
                  },
                  {
                    "length": 32,
                    "start": 18953
                  },
                  {
                    "length": 32,
                    "start": 20118
                  },
                  {
                    "length": 32,
                    "start": 22117
                  }
                ],
                "5400": [
                  {
                    "length": 32,
                    "start": 7502
                  },
                  {
                    "length": 32,
                    "start": 21326
                  },
                  {
                    "length": 32,
                    "start": 21473
                  },
                  {
                    "length": 32,
                    "start": 23333
                  },
                  {
                    "length": 32,
                    "start": 23472
                  }
                ],
                "5402": [
                  {
                    "length": 32,
                    "start": 7443
                  },
                  {
                    "length": 32,
                    "start": 21385
                  },
                  {
                    "length": 32,
                    "start": 23375
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106102f35760003560e01c80638053493411610191578063c3666c36116100e3578063e8ab9ccc11610097578063f247296511610071578063f247296514611343578063f2fde38b146113f4578063f3993d111461141a576102f3565b8063e8ab9ccc146110ee578063e985e9c51461124c578063f242432a1461127a576102f3565b8063c7778baa116100c8578063c7778baa14611097578063c87b56dd146110b4578063d0011d9d146110d1576102f3565b8063c3666c3614610f81578063c4c2bfdc1461108f576102f3565b80639865027511610145578063adebf6f21161011f578063adebf6f214610e83578063b88d4fde14610ea0578063bd85b03914610f64576102f3565b80639865027514610e27578063a22cb46514610e2f578063aa271e1a14610e5d576102f3565b80638da5cb5b116101765780638da5cb5b14610df157806395d89b4114610df9578063983b2d5614610e01576102f3565b80638053493414610c3b5780638832e6e314610d6e576102f3565b806342842e0e1161024a5780635b2bd79e116101fe57806370a08231116101d857806370a0823114610a9957806373c8a95814610abf5780637e518ec814610bcd576102f3565b80635b2bd79e146109ea5780635cfa9297146109f25780636352211e14610a7c576102f3565b80634e1273f41161022f5780634e1273f414610899578063510b5158146109a7578063572b6c05146109c4576102f3565b806342842e0e146107e55780634684d7e91461081b576102f3565b80630d6a5bbb116102ac57806323b872dd1161028657806323b872dd146105c25780632eb2c2d6146105f857806340c10f19146107b9576102f3565b80630d6a5bbb146104555780630e89341c14610573578063124d91e514610590576102f3565b806306fdde03116102dd57806306fdde0314610371578063081812fc146103ee578063095ea7b314610427576102f3565b8062fdd58e146102f857806301ffc9a714610336575b600080fd5b6103246004803603604081101561030e57600080fd5b506001600160a01b0381351690602001356114d4565b60408051918252519081900360200190f35b61035d6004803603602081101561034c57600080fd5b50356001600160e01b0319166115c0565b604080519115158252519081900360200190f35b6103796115ed565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103b357818101518382015260200161039b565b50505050905090810190601f1680156103e05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61040b6004803603602081101561040457600080fd5b5035611684565b604080516001600160a01b039092168252519081900360200190f35b6104536004803603604081101561043d57600080fd5b506001600160a01b038135169060200135611723565b005b6104536004803603608081101561046b57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561049557600080fd5b8201836020820111156104a757600080fd5b803590602001918460208302840111600160201b831117156104c857600080fd5b919390929091602081019035600160201b8111156104e557600080fd5b8201836020820111156104f757600080fd5b803590602001918460208302840111600160201b8311171561051857600080fd5b919390929091602081019035600160201b81111561053557600080fd5b82018360208201111561054757600080fd5b803590602001918460018302840111600160201b8311171561056857600080fd5b50909250905061191f565b6103796004803603602081101561058957600080fd5b50356119da565b610453600480360360608110156105a657600080fd5b506001600160a01b0381351690602081013590604001356119e5565b610453600480360360608110156105d857600080fd5b506001600160a01b03813581169160208101359091169060400135611b38565b610453600480360360a081101561060e57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561064157600080fd5b82018360208201111561065357600080fd5b803590602001918460208302840111600160201b8311171561067457600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156106c357600080fd5b8201836020820111156106d557600080fd5b803590602001918460208302840111600160201b831117156106f657600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561074557600080fd5b82018360208201111561075757600080fd5b803590602001918460018302840111600160201b8311171561077857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611b5a945050505050565b610453600480360360408110156107cf57600080fd5b506001600160a01b038135169060200135611b6e565b610453600480360360608110156107fb57600080fd5b506001600160a01b03813581169160208101359091169060400135611b99565b6104536004803603604081101561083157600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561085b57600080fd5b82018360208201111561086d57600080fd5b803590602001918460208302840111600160201b8311171561088e57600080fd5b509092509050611bb6565b610957600480360360408110156108af57600080fd5b810190602081018135600160201b8111156108c957600080fd5b8201836020820111156108db57600080fd5b803590602001918460208302840111600160201b831117156108fc57600080fd5b919390929091602081019035600160201b81111561091957600080fd5b82018360208201111561092b57600080fd5b803590602001918460208302840111600160201b8311171561094c57600080fd5b509092509050611bfe565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561099357818101518382015260200161097b565b505050509050019250505060405180910390f35b61040b600480360360208110156109bd57600080fd5b5035611d04565b61035d600480360360208110156109da57600080fd5b50356001600160a01b0316611d0f565b610379611d88565b61045360048036036080811015610a0857600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b811115610a3e57600080fd5b820183602082011115610a5057600080fd5b803590602001918460018302840111600160201b83111715610a7157600080fd5b509092509050611e16565b61040b60048036036020811015610a9257600080fd5b5035611e63565b61032460048036036020811015610aaf57600080fd5b50356001600160a01b0316611e6e565b61045360048036036060811015610ad557600080fd5b810190602081018135600160201b811115610aef57600080fd5b820183602082011115610b0157600080fd5b803590602001918460208302840111600160201b83111715610b2257600080fd5b919390929091602081019035600160201b811115610b3f57600080fd5b820183602082011115610b5157600080fd5b803590602001918460208302840111600160201b83111715610b7257600080fd5b919390929091602081019035600160201b811115610b8f57600080fd5b820183602082011115610ba157600080fd5b803590602001918460208302840111600160201b83111715610bc257600080fd5b509092509050611ee7565b61045360048036036020811015610be357600080fd5b810190602081018135600160201b811115610bfd57600080fd5b820183602082011115610c0f57600080fd5b803590602001918460018302840111600160201b83111715610c3057600080fd5b509092509050611fd9565b61045360048036036060811015610c5157600080fd5b6001600160a01b038235169190810190604081016020820135600160201b811115610c7b57600080fd5b820183602082011115610c8d57600080fd5b803590602001918460208302840111600160201b83111715610cae57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b811115610cfd57600080fd5b820183602082011115610d0f57600080fd5b803590602001918460208302840111600160201b83111715610d3057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612055945050505050565b61045360048036036060811015610d8457600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b811115610db357600080fd5b820183602082011115610dc557600080fd5b803590602001918460018302840111600160201b83111715610de657600080fd5b509092509050612322565b61040b612377565b610379612386565b61045360048036036020811015610e1757600080fd5b50356001600160a01b03166123e7565b6104536123fe565b61045360048036036040811015610e4557600080fd5b506001600160a01b038135169060200135151561245c565b61035d60048036036020811015610e7357600080fd5b50356001600160a01b0316612466565b61035d60048036036020811015610e9957600080fd5b503561247b565b61045360048036036080811015610eb657600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b811115610ef057600080fd5b820183602082011115610f0257600080fd5b803590602001918460018302840111600160201b83111715610f2357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612486945050505050565b61032460048036036020811015610f7a57600080fd5b5035612494565b61045360048036036060811015610f9757600080fd5b810190602081018135600160201b811115610fb157600080fd5b820183602082011115610fc357600080fd5b803590602001918460208302840111600160201b83111715610fe457600080fd5b919390929091602081019035600160201b81111561100157600080fd5b82018360208201111561101357600080fd5b803590602001918460208302840111600160201b8311171561103457600080fd5b919390929091602081019035600160201b81111561105157600080fd5b82018360208201111561106357600080fd5b803590602001918460208302840111600160201b8311171561108457600080fd5b50909250905061250b565b610379612653565b610324600480360360208110156110ad57600080fd5b5035612662565b610379600480360360208110156110ca57600080fd5b5035612701565b610453600480360360208110156110e757600080fd5b5035612776565b6104536004803603608081101561110457600080fd5b810190602081018135600160201b81111561111e57600080fd5b82018360208201111561113057600080fd5b803590602001918460208302840111600160201b8311171561115157600080fd5b919390929091602081019035600160201b81111561116e57600080fd5b82018360208201111561118057600080fd5b803590602001918460208302840111600160201b831117156111a157600080fd5b919390929091602081019035600160201b8111156111be57600080fd5b8201836020820111156111d057600080fd5b803590602001918460208302840111600160201b831117156111f157600080fd5b919390929091602081019035600160201b81111561120e57600080fd5b82018360208201111561122057600080fd5b803590602001918460018302840111600160201b8311171561124157600080fd5b50909250905061278a565b61035d6004803603604081101561126257600080fd5b506001600160a01b03813581169160200135166127a5565b610453600480360360a081101561129057600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b8111156112cf57600080fd5b8201836020820111156112e157600080fd5b803590602001918460018302840111600160201b8311171561130257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506127b8945050505050565b6104536004803603604081101561135957600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561138357600080fd5b82018360208201111561139557600080fd5b803590602001918460208302840111600160201b831117156113b657600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061293c945050505050565b6104536004803603602081101561140a57600080fd5b50356001600160a01b0316612ba9565b6104536004803603606081101561143057600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561146357600080fd5b82018360208201111561147557600080fd5b803590602001918460208302840111600160201b8311171561149657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612c0f945050505050565b60006001600160a01b038316611531576040805162461bcd60e51b815260206004820152601760248201527f496e76656e746f72793a207a65726f2061646472657373000000000000000000604482015290519081900360640190fd5b61155b827f0000000000000000000000000000000000000000000000000000000000000000612f06565b15611595576000828152600460205260409020546001600160a01b0384811691161461158857600061158b565b60015b60ff1690506115ba565b5060008181526002602090815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216630a216a2b60e31b14806115e557506115e582612f2c565b90505b919050565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156116795780601f1061164e57610100808354040283529160200191611679565b820191906000526020600020905b81548152906001019060200180831161165c57829003601f168201915b505050505090505b90565b6000818152600460205260408120546001600160a01b0381166116ee576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f6e2d6578697374696e67204e46540000000000604482015290519081900360640190fd5b600160a01b8116156117195750506000818152600960205260409020546001600160a01b03166115e8565b60009150506115e8565b60008181526004602052604090205480611784576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f6e2d6578697374696e67204e46540000000000604482015290519081900360640190fd5b806001600160a01b0384811690821614156117e6576040805162461bcd60e51b815260206004820152601860248201527f496e76656e746f72793a2073656c662d617070726f76616c0000000000000000604482015290519081900360640190fd5b6117f7816117f2612f51565b612f5b565b611848576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000604482015290519081900360640190fd5b6001600160a01b03841661188257600160a01b82161561187d5760008381526004602052604090206001600160a01b03821690555b6118d8565b600160a01b82178083146118a25760008481526004602052604090208190555b506000838152600960205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0386161790555b82846001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a450505050565b61192f61192a612f51565b612fa7565b6119d18787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808b0282810182019093528a82529093508a92508991829185019084908082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061301492505050565b50505050505050565b60606115e58261339f565b60006119ef612f51565b905060006119fd8583612f5b565b9050611a0884613472565b15611a1e57611a198585858461347c565b611ad3565b611a48847f0000000000000000000000000000000000000000000000000000000000000000612f06565b15611a8657611a5b8585858460006135d0565b60405184906000906001600160a01b03881690600080516020615def833981519152908390a4611ad3565b6040805162461bcd60e51b815260206004820152601960248201527f496e76656e746f72793a206e6f74206120746f6b656e20696400000000000000604482015290519081900360640190fd5b60006001600160a01b0316856001600160a01b0316836001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051808381526020018281526020019250505060405180910390a45050505050565b611b5583838360405180602001604052806000815250600061379e565b505050565b611b6785858585856138fa565b5050505050565b611b7961192a612f51565b611b958282604051806020016040528060008152506000613c44565b5050565b611b5583838360405180602001604052806000815250600161379e565b611bc161192a612f51565b611b5583838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613de992505050565b6060838214611c54576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b60008467ffffffffffffffff81118015611c6d57600080fd5b50604051908082528060200260200182016040528015611c97578160200160208202803683370190505b50905060005b808614611cfa57611cdb878783818110611cb357fe5b905060200201356001600160a01b0316868684818110611ccf57fe5b905060200201356114d4565b828281518110611ce757fe5b6020908102919091010152600101611c9d565b5095945050505050565b60006115e58261416b565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614806115e557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316149050919050565b600a805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015611e0e5780601f10611de357610100808354040283529160200191611e0e565b820191906000526020600020905b815481529060010190602001808311611df157829003601f168201915b505050505081565b611e2161192a612f51565b611b6785858585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061420592505050565b60006115e582614359565b60006001600160a01b038216611ecb576040805162461bcd60e51b815260206004820152601760248201527f496e76656e746f72793a207a65726f2061646472657373000000000000000000604482015290519081900360640190fd5b506001600160a01b031660009081526008602052604090205490565b611ef7611ef2612f51565b6143c3565b848381148015611f0657508082145b611f57576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b818114611fcf57611fc7888883818110611f7057fe5b905060200201356001600160a01b0316858584818110611f8c57fe5b90506020020135888885818110611f9f57fe5b905060200201356001600160a01b03166001600160a01b03166144879092919063ffffffff16565b600101611f5a565b5050505050505050565b611fe4611ef2612f51565b611ff0600a8383615d25565b507f04b1dc5c136a3ce9fded8db0ce3d3366c58764ec3a8e4c2b9e52e4ddfe5ebbf7828260405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a15050565b8151815181146120ac576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b60006120b6612f51565b905060006120c48683612f5b565b90506000806000805b8681146122075760008982815181106120e257fe5b602002602001015190506120f581613472565b1561211e576121198b828b858151811061210b57fe5b60200260200101518961347c565b6121fe565b612148817f0000000000000000000000000000000000000000000000000000000000000000612f06565b15611a865761216e8b828b858151811061215e57fe5b60200260200101518960016135d0565b60405181906000906001600160a01b038e1690600080516020615def833981519152908390a460006121c0827f00000000000000000000000000000000000000000000000000000000000000006144ee565b9050856121d357809550600194506121fc565b8581146121f5576121e58c8787614504565b94506001939290920191846121fc565b8460010194505b505b506001016120cd565b50821561223d57612219898484614504565b6001600160a01b038916600090815260086020526040902080549183019182900390555b60006001600160a01b0316896001600160a01b0316866001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8b8b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156122c35781810151838201526020016122ab565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156123025781810151838201526020016122ea565b5050505090500194505050505060405180910390a4505050505050505050565b61232d61192a612f51565b612371848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250613c44915050565b50505050565b6000546001600160a01b031690565b60078054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156116795780601f1061164e57610100808354040283529160200191611679565b6123f2611ef2612f51565b6123fb81614544565b50565b6000612408612f51565b905061241381612fa7565b6001600160a01b0381166000818152600b6020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a250565b611b958282614590565b600b6020526000908152604090205460ff1681565b60006115e582613472565b61237184848484600161379e565b60006124c0827f0000000000000000000000000000000000000000000000000000000000000000612f06565b156124f6576000828152600460205260409020546001600160a01b0316156124e95760016124ec565b60005b60ff1690506115e8565b506000818152600360205260409020546115e8565b612516611ef2612f51565b84838114801561252557508082145b612576576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b818114611fcf5785858281811061258c57fe5b905060200201356001600160a01b03166001600160a01b03166323b872dd308a8a858181106125b757fe5b905060200201356001600160a01b03168787868181106125d357fe5b905060200201356040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b15801561263057600080fd5b505af1158015612644573d6000803e3d6000fd5b50505050806001019050612579565b606061265d614671565b905090565b600061268e827f0000000000000000000000000000000000000000000000000000000000000000612f06565b6126d7576040805162461bcd60e51b8152602060048201526015602482015274125b9d995b9d1bdc9e4e881b9bdd08185b88139195605a1b604482015290519081900360640190fd5b6115e5827f00000000000000000000000000000000000000000000000000000000000000006144ee565b6000818152600460205260409020546060906001600160a01b031661276d576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f6e2d6578697374696e67204e46540000000000604482015290519081900360640190fd5b6115e5826119da565b612781611ef2612f51565b6123fb816146b5565b61279561192a612f51565b611fcf8888888888888888614817565b60006127b18383614b72565b9392505050565b60006127c2612f51565b90506001600160a01b03851661281f576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220746f207a65726f0000000000604482015290519081900360640190fd5b600061282b8783612f5b565b905061283685613472565b1561284d576128488787878785614ba0565b6128bb565b612877857f0000000000000000000000000000000000000000000000000000000000000000612f06565b15611a865761288b87878787856000614d0b565b84866001600160a01b0316886001600160a01b0316600080516020615def83398151915260405160405180910390a45b856001600160a01b0316876001600160a01b0316836001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628888604051808381526020018281526020019250505060405180910390a461292a866001600160a01b0316614ec1565b156119d1576119d18787878787614ec7565b6000612946612f51565b905060006129548483612f5b565b835190915060008167ffffffffffffffff8111801561297257600080fd5b5060405190808252806020026020018201604052801561299c578160200160208202803683370190505b50905060008060005b848114612a935760008882815181106129ba57fe5b6020026020010151905060018583815181106129d257fe5b6020026020010181815250506129ff8a828785815181106129ef57fe5b60200260200101518a60016135d0565b60405181906000906001600160a01b038d1690600080516020615def833981519152908390a46000612a51827f00000000000000000000000000000000000000000000000000000000000000006144ee565b905084612a645780945060019350612a89565b848114612a8257612a768b8686614504565b80945060019350612a89565b8360010193505b50506001016129a5565b508115612ac557612aa5888383614504565b6001600160a01b0388166000908152600860205260409020805485900390555b60006001600160a01b0316886001600160a01b0316876001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8a87604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015612b4b578181015183820152602001612b33565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015612b8a578181015183820152602001612b72565b5050505090500194505050505060405180910390a45050505050505050565b612bb4611ef2612f51565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001600160a01b038216612c6a576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220746f207a65726f0000000000604482015290519081900360640190fd5b6000612c74612f51565b90506000612c828583612f5b565b835190915060008167ffffffffffffffff81118015612ca057600080fd5b50604051908082528060200260200182016040528015612cca578160200160208202803683370190505b50905060008060005b848114612dba576000888281518110612ce857fe5b602002602001015190506001858381518110612d0057fe5b602002602001018181525050612d1c8b8b8360018b6001614d0b565b808a6001600160a01b03168c6001600160a01b0316600080516020615def83398151915260405160405180910390a46000612d77827f00000000000000000000000000000000000000000000000000000000000000006144ee565b905084612d8a5780945060019350612db0565b848114612da957612d9d8c8c8787615038565b80945060019350612db0565b8360010193505b5050600101612cd3565b508115612dd857612dcd89898484615038565b612dd889898661508c565b876001600160a01b0316896001600160a01b0316612df4612f51565b6001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8a87604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015612e64578181015183820152602001612e4c565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015612ea3578181015183820152602001612e8b565b5050505090500194505050505060405180910390a4612eca886001600160a01b0316614ec1565b8015612eda5750612eda886150d7565b15612efb57612efb898989866040518060200160405280600081525061516d565b505050505050505050565b6000600160ff1b8316158015906127b15750612f21826152d2565b909216151592915050565b60006001600160e01b031982166318167c6d60e21b14806115e557506115e5826152e3565b600061265d61533e565b6000816001600160a01b0316836001600160a01b031614806127b15750506001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b6001600160a01b0381166000908152600b602052604090205460ff166123fb576040805162461bcd60e51b815260206004820152601860248201527f4d696e746572526f6c653a206e6f742061204d696e7465720000000000000000604482015290519081900360640190fd5b6001600160a01b038416613069576040805162461bcd60e51b8152602060048201526017602482015276496e76656e746f72793a206d696e7420746f207a65726f60481b604482015290519081900360640190fd5b8251825181146130c0576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b6000806000805b84811461324d5760008882815181106130dc57fe5b6020026020010151905060008883815181106130f457fe5b6020026020010151905061310782613472565b1561311c576131178b838361549e565b613243565b613146827f0000000000000000000000000000000000000000000000000000000000000000612f06565b15611a86576131588b83836001615588565b60405182906001600160a01b038d1690600090600080516020615def833981519152908290a460006131aa837f00000000000000000000000000000000000000000000000000000000000000006144ee565b9050866131bd5780965060019550613241565b86811461323a57856002600089815260200190815260200160002060008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008282540192505081905550856003600089815260200190815260200160002060008282540192505081905550809650858501945060019550613241565b8560010195505b505b50506001016130c7565b5082156132a25760008381526002602090815260408083206001600160a01b038c1680855290835281842080548701905586845260038352818420805487019055835260089091529020805491830191820190555b6001600160a01b03881660006132b6612f51565b6001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8a8a604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561332657818101518382015260200161330e565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561336557818101518382015260200161334d565b5050505090500194505050505060405180910390a461338c886001600160a01b0316614ec1565b15611fcf57611fcf60008989898961516d565b6060600a6133ac836156d8565b604051602001808380546001816001161561010002031660029004801561340a5780601f106133e857610100808354040283529182019161340a565b820191906000526020600020905b8154815290600101906020018083116133f6575b5050825160208401908083835b602083106134365780518252601f199092019160209182019101613417565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529050919050565b600160ff1b161590565b816134c6576040805162461bcd60e51b8152602060048201526015602482015274496e76656e746f72793a207a65726f2076616c756560581b604482015290519081900360640190fd5b80613518576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000604482015290519081900360640190fd5b60008381526002602090815260408083206001600160a01b038816845290915290205482811015613590576040805162461bcd60e51b815260206004820152601d60248201527f496e76656e746f72793a206e6f7420656e6f7567682062616c616e6365000000604482015290519081900360640190fd5b60008481526002602090815260408083206001600160a01b0390981683529681528682209285900390925593845260039052509190208054919091039055565b82600114613625576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a2077726f6e67204e46542076616c7565000000000000604482015290519081900360640190fd5b6000848152600460205260409020546001600160a01b0386811690821614613694576040805162461bcd60e51b815260206004820152601860248201527f496e76656e746f72793a206e6f6e2d6f776e6564204e46540000000000000000604482015290519081900360640190fd5b8261372557600160a01b8116158015906136d457506000858152600960205260409020546001600160a01b03166136c9612f51565b6001600160a01b0316145b613725576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000604482015290519081900360640190fd5b600085815260046020526040902061dead60f01b905581613796576137758661376e877f00000000000000000000000000000000000000000000000000000000000000006144ee565b6001614504565b6001600160a01b038616600090815260086020526040902080546000190190555b505050505050565b6001600160a01b0384166137f9576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220746f207a65726f0000000000604482015290519081900360640190fd5b6000613803612f51565b905060006138118783612f5b565b90506138238787876001856000614d0b565b84866001600160a01b0316886001600160a01b0316600080516020615def83398151915260405160405180910390a4856001600160a01b0316876001600160a01b0316836001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62886001604051808381526020018281526020019250505060405180910390a46138c2866001600160a01b0316614ec1565b156119d1576138d0866150d7565b156138e8576138e3878787600188614ec7565b6119d1565b82156119d1576119d1878787876157cb565b6001600160a01b038416613955576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220746f207a65726f0000000000604482015290519081900360640190fd5b8251825181146139ac576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b60006139b6612f51565b905060006139c48883612f5b565b90506000806000805b868114613b135760008a82815181106139e257fe5b602002602001015190506139f581613472565b15613a1f57613a1a8d8d838d8681518110613a0c57fe5b60200260200101518a614ba0565b613b0a565b613a49817f0000000000000000000000000000000000000000000000000000000000000000612f06565b15611a8657613a708d8d838d8681518110613a6057fe5b60200260200101518a6001614d0b565b808c6001600160a01b03168e6001600160a01b0316600080516020615def83398151915260405160405180910390a46000613acb827f00000000000000000000000000000000000000000000000000000000000000006144ee565b905085613ade5780955060019450613b08565b858114613b0157613af18e8e8888615038565b9450600193929092019184613b08565b8460010194505b505b506001016139cd565b508215613b3357613b268b8b8585615038565b8101613b338b8b8361508c565b896001600160a01b03168b6001600160a01b0316613b4f612f51565b6001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015613bbf578181015183820152602001613ba7565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015613bfe578181015183820152602001613be6565b5050505090500194505050505060405180910390a4613c258a6001600160a01b0316614ec1565b15613c3757613c378b8b8b8b8b61516d565b5050505050505050505050565b6001600160a01b038416613c99576040805162461bcd60e51b8152602060048201526017602482015276496e76656e746f72793a206d696e7420746f207a65726f60481b604482015290519081900360640190fd5b613cc3837f0000000000000000000000000000000000000000000000000000000000000000612f06565b613d0c576040805162461bcd60e51b8152602060048201526015602482015274125b9d995b9d1bdc9e4e881b9bdd08185b88139195605a1b604482015290519081900360640190fd5b613d1a848460016000615588565b60405183906001600160a01b03861690600090600080516020615def833981519152908290a46001600160a01b0384166000613d54612f51565b6001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62866001604051808381526020018281526020019250505060405180910390a4613daf846001600160a01b0316614ec1565b1561237157613dbd846150d7565b15613dd657613dd160008585600186614ec7565b612371565b80156123715761237160008585856157cb565b6001600160a01b038216613e3e576040805162461bcd60e51b8152602060048201526017602482015276496e76656e746f72793a206d696e7420746f207a65726f60481b604482015290519081900360640190fd5b805160008167ffffffffffffffff81118015613e5957600080fd5b50604051908082528060200260200182016040528015613e83578160200160208202803683370190505b50905060008060005b84811461400f576000868281518110613ea157fe5b60200260200101519050613ede7f000000000000000000000000000000000000000000000000000000000000000082612f0690919063ffffffff16565b613f27576040805162461bcd60e51b8152602060048201526015602482015274125b9d995b9d1bdc9e4e881b9bdd08185b88139195605a1b604482015290519081900360640190fd5b6001858381518110613f3557fe5b602002602001018181525050613f4e8882600180615588565b60405181906001600160a01b038a1690600090600080516020615def833981519152908290a46000613fa0827f00000000000000000000000000000000000000000000000000000000000000006144ee565b905084613fb35780945060019350614005565b848114613ffe5760008581526002602090815260408083206001600160a01b038d16845282528083208054880190559682526003905294909420805490930190925560019183614005565b8360010193505b5050600101613e8c565b5060008281526002602090815260408083206001600160a01b038a16808552908352818420805486019055858452600383528184208054860190558084526008909252822080548701905590614063612f51565b6001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8887604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156140d35781810151838201526020016140bb565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156141125781810151838201526020016140fa565b5050505090500194505050505060405180910390a4614139866001600160a01b0316614ec1565b80156141495750614149866150d7565b156137965761379660008787866040518060200160405280600081525061516d565b6000614197827f0000000000000000000000000000000000000000000000000000000000000000612f06565b156141e9576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f74206120636f6c6c656374696f6e0000000000604482015290519081900360640190fd5b506000908152600560205260409020546001600160a01b031690565b6001600160a01b03841661425a576040805162461bcd60e51b8152602060048201526017602482015276496e76656e746f72793a206d696e7420746f207a65726f60481b604482015290519081900360640190fd5b6000614264612f51565b905061426f84613472565b156142845761427f85858561549e565b6142e7565b6142ae847f0000000000000000000000000000000000000000000000000000000000000000612f06565b15611a86576142c08585856000615588565b60405184906001600160a01b03871690600090600080516020615def833981519152908290a45b604080518581526020810185905281516001600160a01b0380891693600093918616927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629281900390910190a4614346856001600160a01b0316614ec1565b15611b6757611b67600086868686614ec7565b6000818152600460205260408120546001600160a01b0381166115e5576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f6e2d6578697374696e67204e46540000000000604482015290519081900360640190fd5b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156143fc57600080fd5b505afa158015614410573d6000803e3d6000fd5b505050506040513d602081101561442657600080fd5b50516001600160a01b038281169116146123fb576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b179052611b55908490615934565b60006144f9826152d2565b198316905092915050565b60008281526002602090815260408083206001600160a01b0390961683529481528482208054849003905592815260039092529190208054919091039055565b6001600160a01b0381166000818152600b6020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b600061459a612f51565b9050806001600160a01b0316836001600160a01b03161415614603576040805162461bcd60e51b815260206004820152601860248201527f496e76656e746f72793a2073656c662d617070726f76616c0000000000000000604482015290519081900360640190fd5b6001600160a01b03818116600081815260016020908152604080832094881680845294825291829020805460ff1916871515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b606061467b615b17565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092935050505090565b6146df817f0000000000000000000000000000000000000000000000000000000000000000612f06565b15614731576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f74206120636f6c6c656374696f6e0000000000604482015290519081900360640190fd5b6000818152600560205260409020546001600160a01b03161561479b576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206578697374696e6720636f6c6c656374696f6e0000604482015290519081900360640190fd5b6147a3612f51565b6000828152600560205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556147e581613472565b1515817f4ebf8ad0df535ba5e487bc9cb27fe44120ca81c3a95d3eba79c0bd1df2ab2d5d60405160405180910390a350565b86858114801561482657508084145b614877576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a20696e636f6e73697374656e74206172726179730000604482015290519081900360640190fd5b6000614881612f51565b905060005b828114613c375760008b8b8381811061489b57fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b0316141561490f576040805162461bcd60e51b8152602060048201526017602482015276496e76656e746f72793a206d696e7420746f207a65726f60481b604482015290519081900360640190fd5b60008a8a8481811061491d57fe5b905060200201359050600089898581811061493457fe5b90506020020135905061494682613472565b15614a035761495683838361549e565b604080518381526020810183905281516001600160a01b0380871693600093918a16927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629281900390910190a46149b5836001600160a01b0316614ec1565b156149fe576149fe60008484848c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250614ec792505050565b614b64565b614a2d827f0000000000000000000000000000000000000000000000000000000000000000612f06565b15611a8657614a3f8383836000615588565b60405182906001600160a01b03851690600090600080516020615def833981519152908290a4604080518381526001602082015281516001600160a01b0380871693600093918a16927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629281900390910190a4614ac4836001600160a01b0316614ec1565b156149fe57614ad2836150d7565b15614b2157614b1c6000848460018c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250614ec792505050565b6149fe565b6149fe600084848b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506157cb92505050565b505050806001019050614886565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b80614bf2576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000604482015290519081900360640190fd5b81614c3c576040805162461bcd60e51b8152602060048201526015602482015274496e76656e746f72793a207a65726f2076616c756560581b604482015290519081900360640190fd5b60008381526002602090815260408083206001600160a01b038916845290915290205482811015614cb4576040805162461bcd60e51b815260206004820152601d60248201527f496e76656e746f72793a206e6f7420656e6f7567682062616c616e6365000000604482015290519081900360640190fd5b846001600160a01b0316866001600160a01b0316146137965760009384526002602090815260408086206001600160a01b039889168752909152808520918490039091559390941682529190208054909101905550565b82600114614d60576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a2077726f6e67204e46542076616c7565000000000000604482015290519081900360640190fd5b6000848152600460205260409020546001600160a01b0387811690821614614dcf576040805162461bcd60e51b815260206004820152601860248201527f496e76656e746f72793a206e6f6e2d6f776e6564204e46540000000000000000604482015290519081900360640190fd5b82614e6057600160a01b811615801590614e0f57506000858152600960205260409020546001600160a01b0316614e04612f51565b6001600160a01b0316145b614e60576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000604482015290519081900360640190fd5b60008581526004602052604090206001600160a01b0387169055816119d157614e8b8787600161508c565b6119d18787614eba887f00000000000000000000000000000000000000000000000000000000000000006144ee565b6001615038565b3b151590565b63f23a6e6160e01b6001600160a01b03851663f23a6e61614ee6612f51565b888787876040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614f60578181015183820152602001614f48565b50505050905090810190601f168015614f8d5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b158015614fb057600080fd5b505af1158015614fc4573d6000803e3d6000fd5b505050506040513d6020811015614fda57600080fd5b50516001600160e01b03191614611b67576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220726566757365640000000000604482015290519081900360640190fd5b826001600160a01b0316846001600160a01b0316146123715760009182526002602090815260408084206001600160a01b039687168552909152808320805483900390559290931681522080549091019055565b816001600160a01b0316836001600160a01b031614611b55576001600160a01b0380841660009081526008602052604080822080548590039055918416815220805482019055505050565b60408051630271189760e51b6024808301919091528251808303909101815260449091018252602081810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b1781528251935160008082529485948594909392908183858b612710fa955080519450505050609e5a1161515a57fe5b8280156151645750815b95945050505050565b63bc197c8160e01b6001600160a01b03851663bc197c8161518c612f51565b888787876040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b838110156152055781810151838201526020016151ed565b50505050905001848103835286818151815260200191508051906020019060200280838360005b8381101561524457818101518382015260200161522c565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015615280578181015183820152602001615268565b50505050905090810190601f1680156152ad5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b158015614fb057600080fd5b6001610100919091031b6000190190565b60006001600160e01b031982166380ac58cd60e01b148061531457506001600160e01b03198216635b5e139f60e01b145b8061532f57506001600160e01b0319821663f3993d1160e01b145b806115e557506115e582615c7a565b6000338161534a615cfe565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614806153bd57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b156153cb5791506116819050565b6001600160a01b038216321480159061548a57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d682846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561545d57600080fd5b505afa158015615471573d6000803e3d6000fd5b505050506040513d602081101561548757600080fd5b50515b156154985791506116819050565b50905090565b806154e8576040805162461bcd60e51b8152602060048201526015602482015274496e76656e746f72793a207a65726f2076616c756560581b604482015290519081900360640190fd5b60008281526003602052604090205481810181811161554e576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a20737570706c79206f766572666c6f77000000000000604482015290519081900360640190fd5b600093845260036020908152604080862092909255600281528185206001600160a01b039096168552949094525091902080549091019055565b816001146155dd576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a2077726f6e67204e46542076616c7565000000000000604482015290519081900360640190fd5b6000838152600460205260409020541561563e576040805162461bcd60e51b815260206004820152601d60248201527f496e76656e746f72793a206578697374696e672f6275726e74204e4654000000604482015290519081900360640190fd5b60008381526004602052604090206001600160a01b038516905580612371576000615689847f00000000000000000000000000000000000000000000000000000000000000006144ee565b600090815260036020908152604080832080546001908101909155600283528184206001600160a01b038a16855283528184208054820190556008909252909120805490910190555050505050565b6060816156fd57506040805180820190915260018152600360fc1b60208201526115e8565b8160005b811561571557600101600a82049150615701565b60008167ffffffffffffffff8111801561572e57600080fd5b506040519080825280601f01601f191660200182016040528015615759576020820181803683370190505b50859350905060001982015b83156157c257600a840660300160f81b8282806001900393508151811061578857fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350615765565b50949350505050565b630a85bd0160e11b6001600160a01b03841663150b7a026157ea612f51565b8786866040518563ffffffff1660e01b815260040180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561585d578181015183820152602001615845565b50505050905090810190601f16801561588a5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156158ac57600080fd5b505af11580156158c0573d6000803e3d6000fd5b505050506040513d60208110156158d657600080fd5b50516001600160e01b03191614612371576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220726566757365640000000000604482015290519081900360640190fd5b816159476001600160a01b038216614ec1565b615998576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b602083106159d55780518252601f1990920191602091820191016159b6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114615a37576040519150601f19603f3d011682016040523d82523d6000602084013e615a3c565b606091505b50915091508115615abb57805115615ab657808060200190516020811015615a6357600080fd5b5051615ab6576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b611b67565b8051615b0e576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b366000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016811480615b8357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316145b15615b9a57615b90615d0a565b9250925050615c76565b6001600160a01b0381163214801590615c6057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d6615be5615cfe565b836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b158015615c3357600080fd5b505afa158015615c47573d6000803e3d6000fd5b505050506040513d6020811015615c5d57600080fd5b50515b15615c6d57615b90615d0a565b60003692509250505b9091565b60006001600160e01b031982166301ffc9a760e01b1480615cab57506001600160e01b03198216636cdb3d1360e11b145b80615cc657506001600160e01b031982166303a24d0760e21b145b80615ce157506001600160e01b031982166304e72e2360e11b145b806115e55750506001600160e01b03191663bd85b03960e01b1490565b60131936013560601c90565b366000615d1d6013198301828481615dc6565b915091509091565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282615d5b5760008555615da1565b82601f10615d745782800160ff19823516178555615da1565b82800160010185558215615da1579182015b82811115615da1578235825591602001919060010190615d86565b50615dad929150615db1565b5090565b5b80821115615dad5760008155600101615db2565b60008085851115615dd5578182fd5b83861115615de1578182fd5b505082019391909203915056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220096082eabd5b190cf5232ac484044a65896b14c5f05739b67e942bd9a1d2a62064736f6c63430007060033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2F3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x80534934 GT PUSH2 0x191 JUMPI DUP1 PUSH4 0xC3666C36 GT PUSH2 0xE3 JUMPI DUP1 PUSH4 0xE8AB9CCC GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xF2472965 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xF2472965 EQ PUSH2 0x1343 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x13F4 JUMPI DUP1 PUSH4 0xF3993D11 EQ PUSH2 0x141A JUMPI PUSH2 0x2F3 JUMP JUMPDEST DUP1 PUSH4 0xE8AB9CCC EQ PUSH2 0x10EE JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x124C JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x127A JUMPI PUSH2 0x2F3 JUMP JUMPDEST DUP1 PUSH4 0xC7778BAA GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0xC7778BAA EQ PUSH2 0x1097 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x10B4 JUMPI DUP1 PUSH4 0xD0011D9D EQ PUSH2 0x10D1 JUMPI PUSH2 0x2F3 JUMP JUMPDEST DUP1 PUSH4 0xC3666C36 EQ PUSH2 0xF81 JUMPI DUP1 PUSH4 0xC4C2BFDC EQ PUSH2 0x108F JUMPI PUSH2 0x2F3 JUMP JUMPDEST DUP1 PUSH4 0x98650275 GT PUSH2 0x145 JUMPI DUP1 PUSH4 0xADEBF6F2 GT PUSH2 0x11F JUMPI DUP1 PUSH4 0xADEBF6F2 EQ PUSH2 0xE83 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0xEA0 JUMPI DUP1 PUSH4 0xBD85B039 EQ PUSH2 0xF64 JUMPI PUSH2 0x2F3 JUMP JUMPDEST DUP1 PUSH4 0x98650275 EQ PUSH2 0xE27 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0xE2F JUMPI DUP1 PUSH4 0xAA271E1A EQ PUSH2 0xE5D JUMPI PUSH2 0x2F3 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x176 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xDF1 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0xDF9 JUMPI DUP1 PUSH4 0x983B2D56 EQ PUSH2 0xE01 JUMPI PUSH2 0x2F3 JUMP JUMPDEST DUP1 PUSH4 0x80534934 EQ PUSH2 0xC3B JUMPI DUP1 PUSH4 0x8832E6E3 EQ PUSH2 0xD6E JUMPI PUSH2 0x2F3 JUMP JUMPDEST DUP1 PUSH4 0x42842E0E GT PUSH2 0x24A JUMPI DUP1 PUSH4 0x5B2BD79E GT PUSH2 0x1FE JUMPI DUP1 PUSH4 0x70A08231 GT PUSH2 0x1D8 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0xA99 JUMPI DUP1 PUSH4 0x73C8A958 EQ PUSH2 0xABF JUMPI DUP1 PUSH4 0x7E518EC8 EQ PUSH2 0xBCD JUMPI PUSH2 0x2F3 JUMP JUMPDEST DUP1 PUSH4 0x5B2BD79E EQ PUSH2 0x9EA JUMPI DUP1 PUSH4 0x5CFA9297 EQ PUSH2 0x9F2 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0xA7C JUMPI PUSH2 0x2F3 JUMP JUMPDEST DUP1 PUSH4 0x4E1273F4 GT PUSH2 0x22F JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x899 JUMPI DUP1 PUSH4 0x510B5158 EQ PUSH2 0x9A7 JUMPI DUP1 PUSH4 0x572B6C05 EQ PUSH2 0x9C4 JUMPI PUSH2 0x2F3 JUMP JUMPDEST DUP1 PUSH4 0x42842E0E EQ PUSH2 0x7E5 JUMPI DUP1 PUSH4 0x4684D7E9 EQ PUSH2 0x81B JUMPI PUSH2 0x2F3 JUMP JUMPDEST DUP1 PUSH4 0xD6A5BBB GT PUSH2 0x2AC JUMPI DUP1 PUSH4 0x23B872DD GT PUSH2 0x286 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x5C2 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x5F8 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x7B9 JUMPI PUSH2 0x2F3 JUMP JUMPDEST DUP1 PUSH4 0xD6A5BBB EQ PUSH2 0x455 JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x573 JUMPI DUP1 PUSH4 0x124D91E5 EQ PUSH2 0x590 JUMPI PUSH2 0x2F3 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 GT PUSH2 0x2DD JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x371 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x3EE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x427 JUMPI PUSH2 0x2F3 JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x2F8 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x336 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x324 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x30E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x14D4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x35D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x34C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x15C0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x379 PUSH2 0x15ED JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3B3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x39B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3E0 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x40B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x404 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1684 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x43D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1723 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x46B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x495 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x4C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x4E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x518 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x535 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x547 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x568 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x191F JUMP JUMPDEST PUSH2 0x379 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x589 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x19DA JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x5A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x19E5 JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x5D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1B38 JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x60E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x641 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x653 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x674 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x6C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x6F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x745 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x757 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x778 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1B5A SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x7CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1B6E JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x7FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1B99 JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x831 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x85B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x86D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x88E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1BB6 JUMP JUMPDEST PUSH2 0x957 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x8AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x8C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x8DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x8FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x919 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x92B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x94C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1BFE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x993 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x97B JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x40B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1D04 JUMP JUMPDEST PUSH2 0x35D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1D0F JUMP JUMPDEST PUSH2 0x379 PUSH2 0x1D88 JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xA08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xA3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xA71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1E16 JUMP JUMPDEST PUSH2 0x40B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1E63 JUMP JUMPDEST PUSH2 0x324 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1E6E JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xAD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xAEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xB22 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xB3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xB72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xB8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xBA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xBC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1EE7 JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xBFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xC30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1FD9 JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xC51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xC7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xCAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xCFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xD30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x2055 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xD84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xDB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xDC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xDE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2322 JUMP JUMPDEST PUSH2 0x40B PUSH2 0x2377 JUMP JUMPDEST PUSH2 0x379 PUSH2 0x2386 JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE17 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x23E7 JUMP JUMPDEST PUSH2 0x453 PUSH2 0x23FE JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xE45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x245C JUMP JUMPDEST PUSH2 0x35D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2466 JUMP JUMPDEST PUSH2 0x35D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x247B JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xEB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xEF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xF02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xF23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x2486 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x324 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2494 JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xF97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xFB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xFC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xFE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x1001 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1013 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x1034 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x1051 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1063 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x1084 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x250B JUMP JUMPDEST PUSH2 0x379 PUSH2 0x2653 JUMP JUMPDEST PUSH2 0x324 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2662 JUMP JUMPDEST PUSH2 0x379 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2701 JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2776 JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x1104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x111E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1130 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x1151 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x116E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1180 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x11A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x11BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x11D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x11F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x120E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1220 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x1241 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x278A JUMP JUMPDEST PUSH2 0x35D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x27A5 JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x1290 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x12CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x12E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x1302 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x27B8 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1359 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x1383 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x13B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x293C SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x140A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2BA9 JUMP JUMPDEST PUSH2 0x453 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1430 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x1463 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1475 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x1496 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x2C0F SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1531 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207A65726F2061646472657373000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x155B DUP3 PUSH32 0x0 PUSH2 0x2F06 JUMP JUMPDEST ISZERO PUSH2 0x1595 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 AND EQ PUSH2 0x1588 JUMPI PUSH1 0x0 PUSH2 0x158B JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x15BA JUMP JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0xA216A2B PUSH1 0xE3 SHL EQ DUP1 PUSH2 0x15E5 JUMPI POP PUSH2 0x15E5 DUP3 PUSH2 0x2F2C JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1679 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x164E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1679 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x165C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x16EE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D6578697374696E67204E46540000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO PUSH2 0x1719 JUMPI POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x15E8 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x15E8 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0x1784 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D6578697374696E67204E46540000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP1 DUP3 AND EQ ISZERO PUSH2 0x17E6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2073656C662D617070726F76616C0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x17F7 DUP2 PUSH2 0x17F2 PUSH2 0x2F51 JUMP JUMPDEST PUSH2 0x2F5B JUMP JUMPDEST PUSH2 0x1848 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D617070726F7665642073656E6465720000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1882 JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP3 AND ISZERO PUSH2 0x187D JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 SSTORE JUMPDEST PUSH2 0x18D8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 SHL DUP3 OR DUP1 DUP4 EQ PUSH2 0x18A2 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE JUMPDEST POP PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND OR SWAP1 SSTORE JUMPDEST DUP3 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x192F PUSH2 0x192A PUSH2 0x2F51 JUMP JUMPDEST PUSH2 0x2FA7 JUMP JUMPDEST PUSH2 0x19D1 DUP8 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP12 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP11 DUP3 MSTORE SWAP1 SWAP4 POP DUP11 SWAP3 POP DUP10 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F DUP11 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP9 DUP2 MSTORE SWAP3 POP DUP9 SWAP2 POP DUP8 SWAP1 DUP2 SWAP1 DUP5 ADD DUP4 DUP3 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3014 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x15E5 DUP3 PUSH2 0x339F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19EF PUSH2 0x2F51 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x19FD DUP6 DUP4 PUSH2 0x2F5B JUMP JUMPDEST SWAP1 POP PUSH2 0x1A08 DUP5 PUSH2 0x3472 JUMP JUMPDEST ISZERO PUSH2 0x1A1E JUMPI PUSH2 0x1A19 DUP6 DUP6 DUP6 DUP5 PUSH2 0x347C JUMP JUMPDEST PUSH2 0x1AD3 JUMP JUMPDEST PUSH2 0x1A48 DUP5 PUSH32 0x0 PUSH2 0x2F06 JUMP JUMPDEST ISZERO PUSH2 0x1A86 JUMPI PUSH2 0x1A5B DUP6 DUP6 DUP6 DUP5 PUSH1 0x0 PUSH2 0x35D0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DEF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP4 SWAP1 LOG4 PUSH2 0x1AD3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F74206120746F6B656E20696400000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1B55 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x379E JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1B67 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x38FA JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1B79 PUSH2 0x192A PUSH2 0x2F51 JUMP JUMPDEST PUSH2 0x1B95 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x3C44 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x1B55 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x1 PUSH2 0x379E JUMP JUMPDEST PUSH2 0x1BC1 PUSH2 0x192A PUSH2 0x2F51 JUMP JUMPDEST PUSH2 0x1B55 DUP4 DUP4 DUP4 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3DE9 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 DUP3 EQ PUSH2 0x1C54 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1C6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1C97 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP1 DUP7 EQ PUSH2 0x1CFA JUMPI PUSH2 0x1CDB DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x1CB3 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0x1CCF JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x14D4 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1CE7 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1C9D JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15E5 DUP3 PUSH2 0x416B JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x15E5 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1E0E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1DE3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1E0E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1DF1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH2 0x1E21 PUSH2 0x192A PUSH2 0x2F51 JUMP JUMPDEST PUSH2 0x1B67 DUP6 DUP6 DUP6 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x4205 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15E5 DUP3 PUSH2 0x4359 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1ECB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207A65726F2061646472657373000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1EF7 PUSH2 0x1EF2 PUSH2 0x2F51 JUMP JUMPDEST PUSH2 0x43C3 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x1F06 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x1F57 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x1FCF JUMPI PUSH2 0x1FC7 DUP9 DUP9 DUP4 DUP2 DUP2 LT PUSH2 0x1F70 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x1F8C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x1F9F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4487 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1F5A JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1FE4 PUSH2 0x1EF2 PUSH2 0x2F51 JUMP JUMPDEST PUSH2 0x1FF0 PUSH1 0xA DUP4 DUP4 PUSH2 0x5D25 JUMP JUMPDEST POP PUSH32 0x4B1DC5C136A3CE9FDED8DB0CE3D3366C58764EC3A8E4C2B9E52E4DDFE5EBBF7 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP6 POP SWAP1 SWAP4 POP POP POP POP LOG1 POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0x20AC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x20B6 PUSH2 0x2F51 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x20C4 DUP7 DUP4 PUSH2 0x2F5B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP7 DUP2 EQ PUSH2 0x2207 JUMPI PUSH1 0x0 DUP10 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x20E2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x20F5 DUP2 PUSH2 0x3472 JUMP JUMPDEST ISZERO PUSH2 0x211E JUMPI PUSH2 0x2119 DUP12 DUP3 DUP12 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x210B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP10 PUSH2 0x347C JUMP JUMPDEST PUSH2 0x21FE JUMP JUMPDEST PUSH2 0x2148 DUP2 PUSH32 0x0 PUSH2 0x2F06 JUMP JUMPDEST ISZERO PUSH2 0x1A86 JUMPI PUSH2 0x216E DUP12 DUP3 DUP12 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x215E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP10 PUSH1 0x1 PUSH2 0x35D0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 AND SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DEF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP4 SWAP1 LOG4 PUSH1 0x0 PUSH2 0x21C0 DUP3 PUSH32 0x0 PUSH2 0x44EE JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x21D3 JUMPI DUP1 SWAP6 POP PUSH1 0x1 SWAP5 POP PUSH2 0x21FC JUMP JUMPDEST DUP6 DUP2 EQ PUSH2 0x21F5 JUMPI PUSH2 0x21E5 DUP13 DUP8 DUP8 PUSH2 0x4504 JUMP JUMPDEST SWAP5 POP PUSH1 0x1 SWAP4 SWAP3 SWAP1 SWAP3 ADD SWAP2 DUP5 PUSH2 0x21FC JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SWAP5 POP JUMPDEST POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x20CD JUMP JUMPDEST POP DUP3 ISZERO PUSH2 0x223D JUMPI PUSH2 0x2219 DUP10 DUP5 DUP5 PUSH2 0x4504 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP2 DUP4 ADD SWAP2 DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP12 DUP12 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x22C3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x22AB JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2302 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x22EA JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x232D PUSH2 0x192A PUSH2 0x2F51 JUMP JUMPDEST PUSH2 0x2371 DUP5 DUP5 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH1 0x1 SWAP3 POP PUSH2 0x3C44 SWAP2 POP POP JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1679 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x164E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1679 JUMP JUMPDEST PUSH2 0x23F2 PUSH2 0x1EF2 PUSH2 0x2F51 JUMP JUMPDEST PUSH2 0x23FB DUP2 PUSH2 0x4544 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2408 PUSH2 0x2F51 JUMP JUMPDEST SWAP1 POP PUSH2 0x2413 DUP2 PUSH2 0x2FA7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xE94479A9F7E1952CC78F2D6BAAB678ADC1B772D936C6583DEF489E524CB66692 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x1B95 DUP3 DUP3 PUSH2 0x4590 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15E5 DUP3 PUSH2 0x3472 JUMP JUMPDEST PUSH2 0x2371 DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x379E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24C0 DUP3 PUSH32 0x0 PUSH2 0x2F06 JUMP JUMPDEST ISZERO PUSH2 0x24F6 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x24E9 JUMPI PUSH1 0x1 PUSH2 0x24EC JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x15E8 JUMP JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x2516 PUSH2 0x1EF2 PUSH2 0x2F51 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x2525 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x2576 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636F763A20696E636F6E73697374656E7420617272617973000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 EQ PUSH2 0x1FCF JUMPI DUP6 DUP6 DUP3 DUP2 DUP2 LT PUSH2 0x258C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD ADDRESS DUP11 DUP11 DUP6 DUP2 DUP2 LT PUSH2 0x25B7 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x25D3 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2630 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2644 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x2579 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x265D PUSH2 0x4671 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x268E DUP3 PUSH32 0x0 PUSH2 0x2F06 JUMP JUMPDEST PUSH2 0x26D7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x125B9D995B9D1BDC9E4E881B9BDD08185B88139195 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x15E5 DUP3 PUSH32 0x0 PUSH2 0x44EE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x276D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D6578697374696E67204E46540000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x15E5 DUP3 PUSH2 0x19DA JUMP JUMPDEST PUSH2 0x2781 PUSH2 0x1EF2 PUSH2 0x2F51 JUMP JUMPDEST PUSH2 0x23FB DUP2 PUSH2 0x46B5 JUMP JUMPDEST PUSH2 0x2795 PUSH2 0x192A PUSH2 0x2F51 JUMP JUMPDEST PUSH2 0x1FCF DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0x4817 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27B1 DUP4 DUP4 PUSH2 0x4B72 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27C2 PUSH2 0x2F51 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x281F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220746F207A65726F0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x282B DUP8 DUP4 PUSH2 0x2F5B JUMP JUMPDEST SWAP1 POP PUSH2 0x2836 DUP6 PUSH2 0x3472 JUMP JUMPDEST ISZERO PUSH2 0x284D JUMPI PUSH2 0x2848 DUP8 DUP8 DUP8 DUP8 DUP6 PUSH2 0x4BA0 JUMP JUMPDEST PUSH2 0x28BB JUMP JUMPDEST PUSH2 0x2877 DUP6 PUSH32 0x0 PUSH2 0x2F06 JUMP JUMPDEST ISZERO PUSH2 0x1A86 JUMPI PUSH2 0x288B DUP8 DUP8 DUP8 DUP8 DUP6 PUSH1 0x0 PUSH2 0x4D0B JUMP JUMPDEST DUP5 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DEF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP9 DUP9 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x292A DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4EC1 JUMP JUMPDEST ISZERO PUSH2 0x19D1 JUMPI PUSH2 0x19D1 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x4EC7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2946 PUSH2 0x2F51 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2954 DUP5 DUP4 PUSH2 0x2F5B JUMP JUMPDEST DUP4 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2972 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x299C JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST DUP5 DUP2 EQ PUSH2 0x2A93 JUMPI PUSH1 0x0 DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x29BA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x1 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x29D2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x29FF DUP11 DUP3 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x29EF JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP11 PUSH1 0x1 PUSH2 0x35D0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DEF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP4 SWAP1 LOG4 PUSH1 0x0 PUSH2 0x2A51 DUP3 PUSH32 0x0 PUSH2 0x44EE JUMP JUMPDEST SWAP1 POP DUP5 PUSH2 0x2A64 JUMPI DUP1 SWAP5 POP PUSH1 0x1 SWAP4 POP PUSH2 0x2A89 JUMP JUMPDEST DUP5 DUP2 EQ PUSH2 0x2A82 JUMPI PUSH2 0x2A76 DUP12 DUP7 DUP7 PUSH2 0x4504 JUMP JUMPDEST DUP1 SWAP5 POP PUSH1 0x1 SWAP4 POP PUSH2 0x2A89 JUMP JUMPDEST DUP4 PUSH1 0x1 ADD SWAP4 POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x29A5 JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x2AC5 JUMPI PUSH2 0x2AA5 DUP9 DUP4 DUP4 PUSH2 0x4504 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP6 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP11 DUP8 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2B4B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2B33 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2B8A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2B72 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2BB4 PUSH2 0x1EF2 PUSH2 0x2F51 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 DUP3 OR DUP1 DUP5 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 SWAP2 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2C6A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220746F207A65726F0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2C74 PUSH2 0x2F51 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2C82 DUP6 DUP4 PUSH2 0x2F5B JUMP JUMPDEST DUP4 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2CA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2CCA JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST DUP5 DUP2 EQ PUSH2 0x2DBA JUMPI PUSH1 0x0 DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2CE8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x1 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2D00 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x2D1C DUP12 DUP12 DUP4 PUSH1 0x1 DUP12 PUSH1 0x1 PUSH2 0x4D0B JUMP JUMPDEST DUP1 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DEF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x0 PUSH2 0x2D77 DUP3 PUSH32 0x0 PUSH2 0x44EE JUMP JUMPDEST SWAP1 POP DUP5 PUSH2 0x2D8A JUMPI DUP1 SWAP5 POP PUSH1 0x1 SWAP4 POP PUSH2 0x2DB0 JUMP JUMPDEST DUP5 DUP2 EQ PUSH2 0x2DA9 JUMPI PUSH2 0x2D9D DUP13 DUP13 DUP8 DUP8 PUSH2 0x5038 JUMP JUMPDEST DUP1 SWAP5 POP PUSH1 0x1 SWAP4 POP PUSH2 0x2DB0 JUMP JUMPDEST DUP4 PUSH1 0x1 ADD SWAP4 POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x2CD3 JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x2DD8 JUMPI PUSH2 0x2DCD DUP10 DUP10 DUP5 DUP5 PUSH2 0x5038 JUMP JUMPDEST PUSH2 0x2DD8 DUP10 DUP10 DUP7 PUSH2 0x508C JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2DF4 PUSH2 0x2F51 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP11 DUP8 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2E64 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2E4C JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2EA3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2E8B JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x2ECA DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4EC1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2EDA JUMPI POP PUSH2 0x2EDA DUP9 PUSH2 0x50D7 JUMP JUMPDEST ISZERO PUSH2 0x2EFB JUMPI PUSH2 0x2EFB DUP10 DUP10 DUP10 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x516D JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xFF SHL DUP4 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x27B1 JUMPI POP PUSH2 0x2F21 DUP3 PUSH2 0x52D2 JUMP JUMPDEST SWAP1 SWAP3 AND ISZERO ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x18167C6D PUSH1 0xE2 SHL EQ DUP1 PUSH2 0x15E5 JUMPI POP PUSH2 0x15E5 DUP3 PUSH2 0x52E3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x265D PUSH2 0x533E JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x27B1 JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x23FB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D696E746572526F6C653A206E6F742061204D696E7465720000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x3069 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH23 0x496E76656E746F72793A206D696E7420746F207A65726F PUSH1 0x48 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 MLOAD DUP3 MLOAD DUP2 EQ PUSH2 0x30C0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP5 DUP2 EQ PUSH2 0x324D JUMPI PUSH1 0x0 DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x30DC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x30F4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x3107 DUP3 PUSH2 0x3472 JUMP JUMPDEST ISZERO PUSH2 0x311C JUMPI PUSH2 0x3117 DUP12 DUP4 DUP4 PUSH2 0x549E JUMP JUMPDEST PUSH2 0x3243 JUMP JUMPDEST PUSH2 0x3146 DUP3 PUSH32 0x0 PUSH2 0x2F06 JUMP JUMPDEST ISZERO PUSH2 0x1A86 JUMPI PUSH2 0x3158 DUP12 DUP4 DUP4 PUSH1 0x1 PUSH2 0x5588 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DEF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP3 SWAP1 LOG4 PUSH1 0x0 PUSH2 0x31AA DUP4 PUSH32 0x0 PUSH2 0x44EE JUMP JUMPDEST SWAP1 POP DUP7 PUSH2 0x31BD JUMPI DUP1 SWAP7 POP PUSH1 0x1 SWAP6 POP PUSH2 0x3241 JUMP JUMPDEST DUP7 DUP2 EQ PUSH2 0x323A JUMPI DUP6 PUSH1 0x2 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP15 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP6 PUSH1 0x3 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 SWAP7 POP DUP6 DUP6 ADD SWAP5 POP PUSH1 0x1 SWAP6 POP PUSH2 0x3241 JUMP JUMPDEST DUP6 PUSH1 0x1 ADD SWAP6 POP JUMPDEST POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x30C7 JUMP JUMPDEST POP DUP3 ISZERO PUSH2 0x32A2 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE DUP7 DUP5 MSTORE PUSH1 0x3 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE DUP4 MSTORE PUSH1 0x8 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD SWAP2 DUP4 ADD SWAP2 DUP3 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 PUSH2 0x32B6 PUSH2 0x2F51 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP11 DUP11 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3326 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x330E JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3365 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x334D JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x338C DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4EC1 JUMP JUMPDEST ISZERO PUSH2 0x1FCF JUMPI PUSH2 0x1FCF PUSH1 0x0 DUP10 DUP10 DUP10 DUP10 PUSH2 0x516D JUMP JUMPDEST PUSH1 0x60 PUSH1 0xA PUSH2 0x33AC DUP4 PUSH2 0x56D8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x340A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x33E8 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 DUP3 ADD SWAP2 PUSH2 0x340A JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x33F6 JUMPI JUMPDEST POP POP DUP3 MLOAD PUSH1 0x20 DUP5 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3436 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3417 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xFF SHL AND ISZERO SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x34C6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x496E76656E746F72793A207A65726F2076616C7565 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x3518 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D617070726F7665642073656E6465720000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x3590 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F7420656E6F7567682062616C616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP9 AND DUP4 MSTORE SWAP7 DUP2 MSTORE DUP7 DUP3 KECCAK256 SWAP3 DUP6 SWAP1 SUB SWAP1 SWAP3 SSTORE SWAP4 DUP5 MSTORE PUSH1 0x3 SWAP1 MSTORE POP SWAP2 SWAP1 KECCAK256 DUP1 SLOAD SWAP2 SWAP1 SWAP2 SUB SWAP1 SSTORE JUMP JUMPDEST DUP3 PUSH1 0x1 EQ PUSH2 0x3625 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2077726F6E67204E46542076616C7565000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP1 DUP3 AND EQ PUSH2 0x3694 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D6F776E6564204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x3725 JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x36D4 JUMPI POP PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x36C9 PUSH2 0x2F51 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x3725 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D617070726F7665642073656E6465720000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xDEAD PUSH1 0xF0 SHL SWAP1 SSTORE DUP2 PUSH2 0x3796 JUMPI PUSH2 0x3775 DUP7 PUSH2 0x376E DUP8 PUSH32 0x0 PUSH2 0x44EE JUMP JUMPDEST PUSH1 0x1 PUSH2 0x4504 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x37F9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220746F207A65726F0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3803 PUSH2 0x2F51 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3811 DUP8 DUP4 PUSH2 0x2F5B JUMP JUMPDEST SWAP1 POP PUSH2 0x3823 DUP8 DUP8 DUP8 PUSH1 0x1 DUP6 PUSH1 0x0 PUSH2 0x4D0B JUMP JUMPDEST DUP5 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DEF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP9 PUSH1 0x1 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x38C2 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4EC1 JUMP JUMPDEST ISZERO PUSH2 0x19D1 JUMPI PUSH2 0x38D0 DUP7 PUSH2 0x50D7 JUMP JUMPDEST ISZERO PUSH2 0x38E8 JUMPI PUSH2 0x38E3 DUP8 DUP8 DUP8 PUSH1 0x1 DUP9 PUSH2 0x4EC7 JUMP JUMPDEST PUSH2 0x19D1 JUMP JUMPDEST DUP3 ISZERO PUSH2 0x19D1 JUMPI PUSH2 0x19D1 DUP8 DUP8 DUP8 DUP8 PUSH2 0x57CB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x3955 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220746F207A65726F0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 MLOAD DUP3 MLOAD DUP2 EQ PUSH2 0x39AC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x39B6 PUSH2 0x2F51 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x39C4 DUP9 DUP4 PUSH2 0x2F5B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP7 DUP2 EQ PUSH2 0x3B13 JUMPI PUSH1 0x0 DUP11 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x39E2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x39F5 DUP2 PUSH2 0x3472 JUMP JUMPDEST ISZERO PUSH2 0x3A1F JUMPI PUSH2 0x3A1A DUP14 DUP14 DUP4 DUP14 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x3A0C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP11 PUSH2 0x4BA0 JUMP JUMPDEST PUSH2 0x3B0A JUMP JUMPDEST PUSH2 0x3A49 DUP2 PUSH32 0x0 PUSH2 0x2F06 JUMP JUMPDEST ISZERO PUSH2 0x1A86 JUMPI PUSH2 0x3A70 DUP14 DUP14 DUP4 DUP14 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x3A60 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP11 PUSH1 0x1 PUSH2 0x4D0B JUMP JUMPDEST DUP1 DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP15 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DEF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x0 PUSH2 0x3ACB DUP3 PUSH32 0x0 PUSH2 0x44EE JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x3ADE JUMPI DUP1 SWAP6 POP PUSH1 0x1 SWAP5 POP PUSH2 0x3B08 JUMP JUMPDEST DUP6 DUP2 EQ PUSH2 0x3B01 JUMPI PUSH2 0x3AF1 DUP15 DUP15 DUP9 DUP9 PUSH2 0x5038 JUMP JUMPDEST SWAP5 POP PUSH1 0x1 SWAP4 SWAP3 SWAP1 SWAP3 ADD SWAP2 DUP5 PUSH2 0x3B08 JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SWAP5 POP JUMPDEST POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x39CD JUMP JUMPDEST POP DUP3 ISZERO PUSH2 0x3B33 JUMPI PUSH2 0x3B26 DUP12 DUP12 DUP6 DUP6 PUSH2 0x5038 JUMP JUMPDEST DUP2 ADD PUSH2 0x3B33 DUP12 DUP12 DUP4 PUSH2 0x508C JUMP JUMPDEST DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3B4F PUSH2 0x2F51 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP13 DUP13 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3BBF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3BA7 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3BFE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3BE6 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x3C25 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4EC1 JUMP JUMPDEST ISZERO PUSH2 0x3C37 JUMPI PUSH2 0x3C37 DUP12 DUP12 DUP12 DUP12 DUP12 PUSH2 0x516D JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x3C99 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH23 0x496E76656E746F72793A206D696E7420746F207A65726F PUSH1 0x48 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3CC3 DUP4 PUSH32 0x0 PUSH2 0x2F06 JUMP JUMPDEST PUSH2 0x3D0C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x125B9D995B9D1BDC9E4E881B9BDD08185B88139195 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3D1A DUP5 DUP5 PUSH1 0x1 PUSH1 0x0 PUSH2 0x5588 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DEF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP3 SWAP1 LOG4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 PUSH2 0x3D54 PUSH2 0x2F51 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP7 PUSH1 0x1 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x3DAF DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4EC1 JUMP JUMPDEST ISZERO PUSH2 0x2371 JUMPI PUSH2 0x3DBD DUP5 PUSH2 0x50D7 JUMP JUMPDEST ISZERO PUSH2 0x3DD6 JUMPI PUSH2 0x3DD1 PUSH1 0x0 DUP6 DUP6 PUSH1 0x1 DUP7 PUSH2 0x4EC7 JUMP JUMPDEST PUSH2 0x2371 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2371 JUMPI PUSH2 0x2371 PUSH1 0x0 DUP6 DUP6 DUP6 PUSH2 0x57CB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3E3E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH23 0x496E76656E746F72793A206D696E7420746F207A65726F PUSH1 0x48 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3E59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3E83 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST DUP5 DUP2 EQ PUSH2 0x400F JUMPI PUSH1 0x0 DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3EA1 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x3EDE PUSH32 0x0 DUP3 PUSH2 0x2F06 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x3F27 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x125B9D995B9D1BDC9E4E881B9BDD08185B88139195 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3F35 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x3F4E DUP9 DUP3 PUSH1 0x1 DUP1 PUSH2 0x5588 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DEF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP3 SWAP1 LOG4 PUSH1 0x0 PUSH2 0x3FA0 DUP3 PUSH32 0x0 PUSH2 0x44EE JUMP JUMPDEST SWAP1 POP DUP5 PUSH2 0x3FB3 JUMPI DUP1 SWAP5 POP PUSH1 0x1 SWAP4 POP PUSH2 0x4005 JUMP JUMPDEST DUP5 DUP2 EQ PUSH2 0x3FFE JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP9 ADD SWAP1 SSTORE SWAP7 DUP3 MSTORE PUSH1 0x3 SWAP1 MSTORE SWAP5 SWAP1 SWAP5 KECCAK256 DUP1 SLOAD SWAP1 SWAP4 ADD SWAP1 SWAP3 SSTORE PUSH1 0x1 SWAP2 DUP4 PUSH2 0x4005 JUMP JUMPDEST DUP4 PUSH1 0x1 ADD SWAP4 POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x3E8C JUMP JUMPDEST POP PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE DUP6 DUP5 MSTORE PUSH1 0x3 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE DUP1 DUP5 MSTORE PUSH1 0x8 SWAP1 SWAP3 MSTORE DUP3 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE SWAP1 PUSH2 0x4063 PUSH2 0x2F51 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP9 DUP8 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x40D3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x40BB JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4112 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x40FA JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x4139 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4EC1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x4149 JUMPI POP PUSH2 0x4149 DUP7 PUSH2 0x50D7 JUMP JUMPDEST ISZERO PUSH2 0x3796 JUMPI PUSH2 0x3796 PUSH1 0x0 DUP8 DUP8 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x516D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4197 DUP3 PUSH32 0x0 PUSH2 0x2F06 JUMP JUMPDEST ISZERO PUSH2 0x41E9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F74206120636F6C6C656374696F6E0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x425A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH23 0x496E76656E746F72793A206D696E7420746F207A65726F PUSH1 0x48 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4264 PUSH2 0x2F51 JUMP JUMPDEST SWAP1 POP PUSH2 0x426F DUP5 PUSH2 0x3472 JUMP JUMPDEST ISZERO PUSH2 0x4284 JUMPI PUSH2 0x427F DUP6 DUP6 DUP6 PUSH2 0x549E JUMP JUMPDEST PUSH2 0x42E7 JUMP JUMPDEST PUSH2 0x42AE DUP5 PUSH32 0x0 PUSH2 0x2F06 JUMP JUMPDEST ISZERO PUSH2 0x1A86 JUMPI PUSH2 0x42C0 DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x5588 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DEF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP3 SWAP1 LOG4 JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND SWAP4 PUSH1 0x0 SWAP4 SWAP2 DUP7 AND SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 PUSH2 0x4346 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4EC1 JUMP JUMPDEST ISZERO PUSH2 0x1B67 JUMPI PUSH2 0x1B67 PUSH1 0x0 DUP7 DUP7 DUP7 DUP7 PUSH2 0x4EC7 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x15E5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D6578697374696E67204E46540000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x43FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4410 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4426 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x23FB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6F7420746865206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x1B55 SWAP1 DUP5 SWAP1 PUSH2 0x5934 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44F9 DUP3 PUSH2 0x52D2 JUMP JUMPDEST NOT DUP4 AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP7 AND DUP4 MSTORE SWAP5 DUP2 MSTORE DUP5 DUP3 KECCAK256 DUP1 SLOAD DUP5 SWAP1 SUB SWAP1 SSTORE SWAP3 DUP2 MSTORE PUSH1 0x3 SWAP1 SWAP3 MSTORE SWAP2 SWAP1 KECCAK256 DUP1 SLOAD SWAP2 SWAP1 SWAP2 SUB SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x6AE172837EA30B801FBFCDD4108AA1D5BF8FF775444FD70256B44E6BF3DFC3F6 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x459A PUSH2 0x2F51 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x4603 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2073656C662D617070726F76616C0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP9 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP8 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x467B PUSH2 0x5B17 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x46DF DUP2 PUSH32 0x0 PUSH2 0x2F06 JUMP JUMPDEST ISZERO PUSH2 0x4731 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F74206120636F6C6C656374696F6E0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x479B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206578697374696E6720636F6C6C656374696F6E0000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x47A3 PUSH2 0x2F51 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x47E5 DUP2 PUSH2 0x3472 JUMP JUMPDEST ISZERO ISZERO DUP2 PUSH32 0x4EBF8AD0DF535BA5E487BC9CB27FE44120CA81C3A95D3EBA79C0BD1DF2AB2D5D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP JUMP JUMPDEST DUP7 DUP6 DUP2 EQ DUP1 ISZERO PUSH2 0x4826 JUMPI POP DUP1 DUP5 EQ JUMPDEST PUSH2 0x4877 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20696E636F6E73697374656E74206172726179730000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4881 PUSH2 0x2F51 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 EQ PUSH2 0x3C37 JUMPI PUSH1 0x0 DUP12 DUP12 DUP4 DUP2 DUP2 LT PUSH2 0x489B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x490F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH23 0x496E76656E746F72793A206D696E7420746F207A65726F PUSH1 0x48 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP11 DUP11 DUP5 DUP2 DUP2 LT PUSH2 0x491D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP PUSH1 0x0 DUP10 DUP10 DUP6 DUP2 DUP2 LT PUSH2 0x4934 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP PUSH2 0x4946 DUP3 PUSH2 0x3472 JUMP JUMPDEST ISZERO PUSH2 0x4A03 JUMPI PUSH2 0x4956 DUP4 DUP4 DUP4 PUSH2 0x549E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP4 PUSH1 0x0 SWAP4 SWAP2 DUP11 AND SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 PUSH2 0x49B5 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4EC1 JUMP JUMPDEST ISZERO PUSH2 0x49FE JUMPI PUSH2 0x49FE PUSH1 0x0 DUP5 DUP5 DUP5 DUP13 DUP13 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x4EC7 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x4B64 JUMP JUMPDEST PUSH2 0x4A2D DUP3 PUSH32 0x0 PUSH2 0x2F06 JUMP JUMPDEST ISZERO PUSH2 0x1A86 JUMPI PUSH2 0x4A3F DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x5588 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DEF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP3 SWAP1 LOG4 PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP4 PUSH1 0x0 SWAP4 SWAP2 DUP11 AND SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 PUSH2 0x4AC4 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4EC1 JUMP JUMPDEST ISZERO PUSH2 0x49FE JUMPI PUSH2 0x4AD2 DUP4 PUSH2 0x50D7 JUMP JUMPDEST ISZERO PUSH2 0x4B21 JUMPI PUSH2 0x4B1C PUSH1 0x0 DUP5 DUP5 PUSH1 0x1 DUP13 DUP13 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x4EC7 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x49FE JUMP JUMPDEST PUSH2 0x49FE PUSH1 0x0 DUP5 DUP5 DUP12 DUP12 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x57CB SWAP3 POP POP POP JUMP JUMPDEST POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x4886 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x4BF2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D617070726F7665642073656E6465720000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH2 0x4C3C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x496E76656E746F72793A207A65726F2076616C7565 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x4CB4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F7420656E6F7567682062616C616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x3796 JUMPI PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP9 DUP10 AND DUP8 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP6 KECCAK256 SWAP2 DUP5 SWAP1 SUB SWAP1 SWAP2 SSTORE SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP JUMP JUMPDEST DUP3 PUSH1 0x1 EQ PUSH2 0x4D60 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2077726F6E67204E46542076616C7565000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP1 DUP3 AND EQ PUSH2 0x4DCF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D6F776E6564204E46540000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x4E60 JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x4E0F JUMPI POP PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4E04 PUSH2 0x2F51 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x4E60 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206E6F6E2D617070726F7665642073656E6465720000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 SSTORE DUP2 PUSH2 0x19D1 JUMPI PUSH2 0x4E8B DUP8 DUP8 PUSH1 0x1 PUSH2 0x508C JUMP JUMPDEST PUSH2 0x19D1 DUP8 DUP8 PUSH2 0x4EBA DUP9 PUSH32 0x0 PUSH2 0x44EE JUMP JUMPDEST PUSH1 0x1 PUSH2 0x5038 JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH4 0xF23A6E61 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH4 0xF23A6E61 PUSH2 0x4EE6 PUSH2 0x2F51 JUMP JUMPDEST DUP9 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4F60 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4F48 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x4F8D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4FB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4FC4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4FDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x1B67 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220726566757365640000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2371 JUMPI PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND DUP6 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE SWAP3 SWAP1 SWAP4 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1B55 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD DUP6 SWAP1 SUB SWAP1 SSTORE SWAP2 DUP5 AND DUP2 MSTORE KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x2711897 PUSH1 0xE5 SHL PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL OR DUP2 MSTORE DUP3 MLOAD SWAP4 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE SWAP5 DUP6 SWAP5 DUP6 SWAP5 SWAP1 SWAP4 SWAP3 SWAP1 DUP2 DUP4 DUP6 DUP12 PUSH2 0x2710 STATICCALL SWAP6 POP DUP1 MLOAD SWAP5 POP POP POP POP PUSH1 0x9E GAS GT PUSH2 0x515A JUMPI INVALID JUMPDEST DUP3 DUP1 ISZERO PUSH2 0x5164 JUMPI POP DUP2 JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0xBC197C81 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH4 0xBC197C81 PUSH2 0x518C PUSH2 0x2F51 JUMP JUMPDEST DUP9 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5205 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x51ED JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5244 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x522C JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5280 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5268 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x52AD JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4FB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH2 0x100 SWAP2 SWAP1 SWAP2 SUB SHL PUSH1 0x0 NOT ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x5314 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x532F JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0xF3993D11 PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x15E5 JUMPI POP PUSH2 0x15E5 DUP3 PUSH2 0x5C7A JUMP JUMPDEST PUSH1 0x0 CALLER DUP2 PUSH2 0x534A PUSH2 0x5CFE JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x53BD JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x53CB JUMPI SWAP2 POP PUSH2 0x1681 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x548A JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 DUP3 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x545D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5471 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5487 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x5498 JUMPI SWAP2 POP PUSH2 0x1681 SWAP1 POP JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x54E8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x496E76656E746F72793A207A65726F2076616C7565 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 ADD DUP2 DUP2 GT PUSH2 0x554E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A20737570706C79206F766572666C6F77000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x2 DUP2 MSTORE DUP2 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP7 AND DUP6 MSTORE SWAP5 SWAP1 SWAP5 MSTORE POP SWAP2 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE JUMP JUMPDEST DUP2 PUSH1 0x1 EQ PUSH2 0x55DD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A2077726F6E67204E46542076616C7565000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x563E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A206578697374696E672F6275726E74204E4654000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 SSTORE DUP1 PUSH2 0x2371 JUMPI PUSH1 0x0 PUSH2 0x5689 DUP5 PUSH32 0x0 PUSH2 0x44EE JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 DUP2 ADD SWAP1 SWAP2 SSTORE PUSH1 0x2 DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP6 MSTORE DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE PUSH1 0x8 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x56FD JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x3 PUSH1 0xFC SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x15E8 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x5715 JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP3 DIV SWAP2 POP PUSH2 0x5701 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x572E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x5759 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP DUP6 SWAP4 POP SWAP1 POP PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP4 ISZERO PUSH2 0x57C2 JUMPI PUSH1 0xA DUP5 MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 DUP1 PUSH1 0x1 SWAP1 SUB SWAP4 POP DUP2 MLOAD DUP2 LT PUSH2 0x5788 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0x5765 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0xA85BD01 PUSH1 0xE1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH4 0x150B7A02 PUSH2 0x57EA PUSH2 0x2F51 JUMP JUMPDEST DUP8 DUP7 DUP7 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x585D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5845 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x588A JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x58AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x58C0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x58D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x2371 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76656E746F72793A207472616E7366657220726566757365640000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH2 0x5947 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x4EC1 JUMP JUMPDEST PUSH2 0x5998 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206E6F6E2D636F6E7472616374000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x59D5 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x59B6 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x5A37 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x5A3C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0x5ABB JUMPI DUP1 MLOAD ISZERO PUSH2 0x5AB6 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5A63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x5AB6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1B67 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x5B0E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433230577261707065723A206F7065726174696F6E206661696C65640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST CALLDATASIZE PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 EQ DUP1 PUSH2 0x5B83 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x5B9A JUMPI PUSH2 0x5B90 PUSH2 0x5D0A JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0x5C76 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x5C60 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 PUSH2 0x5BE5 PUSH2 0x5CFE JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5C33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5C47 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5C5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x5C6D JUMPI PUSH2 0x5B90 PUSH2 0x5D0A JUMP JUMPDEST PUSH1 0x0 CALLDATASIZE SWAP3 POP SWAP3 POP POP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x5CAB JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x6CDB3D13 PUSH1 0xE1 SHL EQ JUMPDEST DUP1 PUSH2 0x5CC6 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x3A24D07 PUSH1 0xE2 SHL EQ JUMPDEST DUP1 PUSH2 0x5CE1 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x4E72E23 PUSH1 0xE1 SHL EQ JUMPDEST DUP1 PUSH2 0x15E5 JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xBD85B039 PUSH1 0xE0 SHL EQ SWAP1 JUMP JUMPDEST PUSH1 0x13 NOT CALLDATASIZE ADD CALLDATALOAD PUSH1 0x60 SHR SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 PUSH2 0x5D1D PUSH1 0x13 NOT DUP4 ADD DUP3 DUP5 DUP2 PUSH2 0x5DC6 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP1 SWAP2 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x5D5B JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x5DA1 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x5D74 JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x5DA1 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x5DA1 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x5DA1 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x5D86 JUMP JUMPDEST POP PUSH2 0x5DAD SWAP3 SWAP2 POP PUSH2 0x5DB1 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x5DAD JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x5DB2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x5DD5 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x5DE1 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP INVALID 0xDD CALLCODE MSTORE 0xAD SHL 0xE2 0xC8 SWAP12 PUSH10 0xC2B068FC378DAA952BA7 CALL PUSH4 0xC4A11628 CREATE2 GAS 0x4D CREATE2 0x23 0xB3 0xEF LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MULMOD PUSH1 0x82 0xEA 0xBD JUMPDEST NOT 0xC CREATE2 0x23 0x2A 0xC4 DUP5 DIV 0x4A PUSH6 0x896B14C5F057 CODECOPY 0xB6 PUSH31 0x942BD9A1D2A62064736F6C6343000706003300000000000000000000000000 ",
              "sourceMap": "1397:5159:25:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3377:341:10;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3377:341:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2178:212:25;;;;;;;;;;;;;;;;-1:-1:-1;2178:212:25;-1:-1:-1;;;;;;2178:212:25;;:::i;:::-;;;;;;;;;;;;;;;;;;2706:98:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4890:377;;;;;;;;;;;;;;;;-1:-1:-1;4890:377:19;;:::i;:::-;;;;-1:-1:-1;;;;;4890:377:19;;;;;;;;;;;;;;3861:995;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3861:995:19;;;;;;;;:::i;:::-;;5031:263:25;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5031:263:25;;;;;;;;;;;;;;;-1:-1:-1;;;5031:263:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5031:263:25;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5031:263:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5031:263:25;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5031:263:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5031:263:25;;;;;;;;;;-1:-1:-1;5031:263:25;;-1:-1:-1;5031:263:25;-1:-1:-1;5031:263:25;:::i;2565:110::-;;;;;;;;;;;;;;;;-1:-1:-1;2565:110:25;;:::i;1556:624:20:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1556:624:20;;;;;;;;;;;;;:::i;5314:268:19:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5314:268:19;;;;;;;;;;;;;;;;;:::i;9096:302::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9096:302:19;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9096:302:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9096:302:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9096:302:19;;;;;;;;-1:-1:-1;9096:302:19;;-1:-1:-1;;;;;9096:302:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9096:302:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9096:302:19;;;;;;;;-1:-1:-1;9096:302:19;;-1:-1:-1;;;;;9096:302:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9096:302:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9096:302:19;;-1:-1:-1;9096:302:19;;-1:-1:-1;;;;;9096:302:19:i;3861:149:25:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3861:149:25;;;;;;;;:::i;5629:271:19:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5629:271:19;;;;;;;;;;;;;;;;;:::i;4117:161:25:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4117:161:25;;;;;;;;;;;;;;;-1:-1:-1;;;4117:161:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4117:161:25;;;;;;;;;;-1:-1:-1;4117:161:25;;-1:-1:-1;4117:161:25;-1:-1:-1;4117:161:25;:::i;3762:435:10:-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3762:435:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3762:435:10;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3762:435:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3762:435:10;;;;;;;;;;-1:-1:-1;3762:435:10;;-1:-1:-1;3762:435:10;-1:-1:-1;3762:435:10;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2855:126:25;;;;;;;;;;;;;;;;-1:-1:-1;2855:126:25;;:::i;544:193:33:-;;;;;;;;;;;;;;;;-1:-1:-1;544:193:33;-1:-1:-1;;;;;544:193:33;;:::i;552:29:9:-;;;:::i;4697:227:25:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4697:227:25;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4697:227:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4697:227:25;;;;;;;;;;-1:-1:-1;4697:227:25;;-1:-1:-1;4697:227:25;-1:-1:-1;4697:227:25;:::i;10251:167:19:-;;;;;;;;;;;;;;;;-1:-1:-1;10251:167:19;;:::i;3621:206::-;;;;;;;;;;;;;;;;-1:-1:-1;3621:206:19;-1:-1:-1;;;;;3621:206:19;;:::i;1137:481:6:-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1137:481:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1137:481:6;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1137:481:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1137:481:6;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1137:481:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1137:481:6;;;;;;;;;;-1:-1:-1;1137:481:6;;-1:-1:-1;1137:481:6;-1:-1:-1;1137:481:6;:::i;588:214:9:-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;588:214:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;588:214:9;;;;;;;;;;-1:-1:-1;588:214:9;;-1:-1:-1;588:214:9;-1:-1:-1;588:214:9;:::i;2235:1961:20:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2235:1961:20;;;;;;;;;;;;;;;-1:-1:-1;;;2235:1961:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2235:1961:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2235:1961:20;;;;;;;;-1:-1:-1;2235:1961:20;;-1:-1:-1;;;;;2235:1961:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2235:1961:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2235:1961:20;;-1:-1:-1;2235:1961:20;;-1:-1:-1;;;;;2235:1961:20:i;4385:205:25:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4385:205:25;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4385:205:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4385:205:25;;;;;;;;;;-1:-1:-1;4385:205:25;;-1:-1:-1;4385:205:25;-1:-1:-1;4385:205:25;:::i;1114:94:2:-;;;:::i;2846:102:19:-;;;:::i;694:120:1:-;;;;;;;;;;;;;;;;-1:-1:-1;694:120:1;-1:-1:-1;;;;;694:120:1;;:::i;929:185::-;;;:::i;9574:188:19:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9574:188:19;;;;;;;;;;:::i;339:40:1:-;;;;;;;;;;;;;;;;-1:-1:-1;339:40:1;-1:-1:-1;;;;;339:40:1;;:::i;4905:122:10:-;;;;;;;;;;;;;;;;-1:-1:-1;4905:122:10;;:::i;5947:300:19:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5947:300:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5947:300:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5947:300:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5947:300:19;;-1:-1:-1;5947:300:19;;-1:-1:-1;;;;;5947:300:19:i;5788:282:10:-;;;;;;;;;;;;;;;;-1:-1:-1;5788:282:10;;:::i;2430:511:6:-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2430:511:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2430:511:6;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2430:511:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2430:511:6;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2430:511:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2430:511:6;;;;;;;;;;-1:-1:-1;2430:511:6;;-1:-1:-1;2430:511:6;-1:-1:-1;2430:511:6;:::i;6460:94:25:-;;;:::i;5071:254:10:-;;;;;;;;;;;;;;;;-1:-1:-1;5071:254:10;;:::i;2990:218:19:-;;;;;;;;;;;;;;;;-1:-1:-1;2990:218:19;;:::i;3479:146:25:-;;;;;;;;;;;;;;;;-1:-1:-1;3479:146:25;;:::i;5535:286::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5535:286:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5535:286:25;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5535:286:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5535:286:25;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5535:286:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5535:286:25;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5535:286:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5535:286:25;;;;;;;;;;-1:-1:-1;5535:286:25;;-1:-1:-1;5535:286:25;-1:-1:-1;5535:286:25;:::i;9809:264:19:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9809:264:19;;;;;;;;;;:::i;8159:890::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8159:890:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8159:890:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8159:890:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8159:890:19;;-1:-1:-1;8159:890:19;;-1:-1:-1;;;;;8159:890:19:i;4251:1412:20:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4251:1412:20;;;;;;;;;;;;;;;-1:-1:-1;;;4251:1412:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4251:1412:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4251:1412:20;;-1:-1:-1;4251:1412:20;;-1:-1:-1;;;;;4251:1412:20:i;1448:197:2:-;;;;;;;;;;;;;;;;-1:-1:-1;1448:197:2;-1:-1:-1;;;;;1448:197:2;;:::i;6294:1689:19:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6294:1689:19;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6294:1689:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6294:1689:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6294:1689:19;;-1:-1:-1;6294:1689:19;;-1:-1:-1;;;;;6294:1689:19:i;3377:341:10:-;3461:7;-1:-1:-1;;;;;3488:19:10;;3480:55;;;;;-1:-1:-1;;;3480:55:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;3550:44;:2;3572:21;3550;:44::i;:::-;3546:128;;;3633:11;;;;:7;:11;;;;;;-1:-1:-1;;;;;3617:38:10;;;;;;:46;;3662:1;3617:46;;;3658:1;3617:46;3610:53;;;;;;3546:128;-1:-1:-1;3691:13:10;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;3691:20:10;;;;;;;;;;3377:341;;;;;:::o;2178:212:25:-;2263:4;-1:-1:-1;;;;;;2286:57:25;;-1:-1:-1;;;2286:57:25;;:97;;;2347:36;2371:11;2347:23;:36::i;:::-;2279:104;;2178:212;;;;:::o;2706:98:19:-;2792:5;2785:12;;;;;;;;-1:-1:-1;;2785:12:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2760:13;;2785:12;;2792:5;;2785:12;;2792:5;2785:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2706:98;;:::o;4890:377::-;4966:7;5001:16;;;:7;:16;;;;;;-1:-1:-1;;;;;5035:37:19;;5027:77;;;;;-1:-1:-1;;;5027:77:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5118:34:19;;:39;5114:147;;-1:-1:-1;;5180:22:19;;;;:13;:22;;;;;;-1:-1:-1;;;;;5180:22:19;5173:29;;5114:147;5248:1;5233:17;;;;;3861:995;3941:13;3957:16;;;:7;:16;;;;;;3991:10;3983:50;;;;;-1:-1:-1;;;3983:50:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;4082:5;-1:-1:-1;;;;;4107:18:19;;;;;;;;4099:55;;;;;-1:-1:-1;;;4099:55:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;4172:41;4186:12;4200;:10;:12::i;:::-;4172:13;:41::i;:::-;4164:84;;;;;-1:-1:-1;;;4164:84:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4262:16:19;;4258:542;;-1:-1:-1;;;4298:34:19;;:39;4294:178;;4417:16;;;;:7;:16;;;;;-1:-1:-1;;;;;4436:21:19;;4417:40;;4294:178;4258:542;;;-1:-1:-1;;;4533:34:19;;4585:29;;;4581:168;;4695:16;;;;:7;:16;;;;;:39;;;4581:168;-1:-1:-1;4762:22:19;;;;:13;:22;;;;;:27;;-1:-1:-1;;4762:27:19;-1:-1:-1;;;;;4762:27:19;;;;;4258:542;4841:7;4837:2;-1:-1:-1;;;;;4814:35:19;4823:12;-1:-1:-1;;;;;4814:35:19;;;;;;;;;;;3861:995;;;;:::o;5031:263:25:-;5212:28;5227:12;:10;:12::i;:::-;5212:14;:28::i;:::-;5250:37;5265:2;5269:3;;5250:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5250:37:25;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5274:6:25;;-1:-1:-1;5274:6:25;;;;5250:37;;;5274:6;;5250:37;5274:6;5250:37;;;;;;;;;-1:-1:-1;;5250:37:25;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5282:4:25;;-1:-1:-1;5282:4:25;;;;5250:37;;5282:4;;;;5250:37;;;;;;;;;-1:-1:-1;5250:14:25;;-1:-1:-1;;;5250:37:25:i;:::-;5031:263;;;;;;;:::o;2565:110::-;2628:13;2660:8;2665:2;2660:4;:8::i;1556:624:20:-;1679:14;1696:12;:10;:12::i;:::-;1679:29;;1718:15;1736:27;1750:4;1756:6;1736:13;:27::i;:::-;1718:45;;1778:20;:2;:18;:20::i;:::-;1774:333;;;1814:42;1828:4;1834:2;1838:5;1845:10;1814:13;:42::i;:::-;1774:333;;;1877:44;:2;1899:21;1877;:44::i;:::-;1873:234;;;1937:44;1946:4;1952:2;1956:5;1963:10;1975:5;1937:8;:44::i;:::-;2000:30;;2027:2;;2023:1;;-1:-1:-1;;;;;2000:30:20;;;-1:-1:-1;;;;;;;;;;;2000:30:20;2023:1;;2000:30;1873:234;;;2061:35;;;-1:-1:-1;;;2061:35:20;;;;;;;;;;;;;;;;;;;;;;;;;;;1873:234;2159:1;-1:-1:-1;;;;;2122:51:20;2145:4;-1:-1:-1;;;;;2122:51:20;2137:6;-1:-1:-1;;;;;2122:51:20;;2163:2;2167:5;2122:51;;;;;;;;;;;;;;;;;;;;;;;;1556:624;;;;;:::o;5314:268:19:-;5441:134;5468:4;5486:2;5502:5;5441:134;;;;;;;;;;;;5560:5;5441:13;:134::i;:::-;5314:268;;;:::o;9096:302::-;9340:51;9363:4;9369:2;9373:3;9378:6;9386:4;9340:22;:51::i;:::-;9096:302;;;;;:::o;3861:149:25:-;3938:28;3953:12;:10;:12::i;3938:28::-;3976:27;3982:2;3986:5;3976:27;;;;;;;;;;;;3997:5;3976;:27::i;:::-;3861:149;;:::o;5629:271:19:-;5760:133;5787:4;5805:2;5821:5;5760:133;;;;;;;;;;;;5879:4;5760:13;:133::i;4117:161:25:-;4211:28;4226:12;:10;:12::i;4211:28::-;4249:22;4260:2;4264:6;;4249:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4249:10:25;;-1:-1:-1;;;4249:22:25:i;3762:435:10:-;3877:16;3913:27;;;3905:70;;;;;-1:-1:-1;;;3905:70:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;3986:25;4028:6;4014:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4014:28:10;;3986:56;;4058:9;4053:112;4073:18;;;4053:112;;4126:28;4136:6;;4143:1;4136:9;;;;;;;;;;;;;-1:-1:-1;;;;;4136:9:10;4147:3;;4151:1;4147:6;;;;;;;;;;;;;4126:9;:28::i;:::-;4112:8;4121:1;4112:11;;;;;;;;;;;;;;;;;:42;4093:3;;4053:112;;;-1:-1:-1;4182:8:10;3762:435;-1:-1:-1;;;;;3762:435:10:o;2855:126:25:-;2926:7;2952:22;2961:12;2952:8;:22::i;544:193:33:-;631:4;667:19;-1:-1:-1;;;;;654:32:33;:9;-1:-1:-1;;;;;654:32:33;;:76;;;;711:18;-1:-1:-1;;;;;690:40:33;:9;-1:-1:-1;;;;;690:40:33;;647:83;;544:193;;;:::o;552:29:9:-;;;;;;;;;;;;;;;-1:-1:-1;;552:29:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4697:227:25:-;4849:28;4864:12;:10;:12::i;4849:28::-;4887:30;4897:2;4901;4905:5;4912:4;;4887:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4887:9:25;;-1:-1:-1;;;4887:30:25:i;10251:167:19:-;10365:7;10391:20;10405:5;10391:13;:20::i;3621:206::-;3700:7;-1:-1:-1;;;;;3727:24:19;;3719:60;;;;;-1:-1:-1;;;3719:60:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3796:24:19;;;;;:12;:24;;;;;;;3621:206::o;1137:481:6:-;1301:31;1319:12;:10;:12::i;:::-;1301:17;:31::i;:::-;1359:8;1392:23;;;:51;;;;-1:-1:-1;1419:24:6;;;1392:51;1384:90;;;;;-1:-1:-1;;;1384:90:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1489:9;1484:128;1509:6;1504:1;:11;1484:128;;1536:65;1577:8;;1586:1;1577:11;;;;;;;;;;;;;-1:-1:-1;;;;;1577:11:6;1590:7;;1598:1;1590:10;;;;;;;;;;;;;1550:6;;1557:1;1550:9;;;;;;;;;;;;;-1:-1:-1;;;;;1550:9:6;-1:-1:-1;;;;;1536:40:6;;;:65;;;;;:::i;:::-;1517:3;;1484:128;;;;1137:481;;;;;;;:::o;588:214:9:-;669:31;687:12;:10;:12::i;669:31::-;710:34;:15;728:16;;710:34;:::i;:::-;;759:36;778:16;;759:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;759:36:9;;;;;;;;-1:-1:-1;759:36:9;;-1:-1:-1;;;;759:36:9;588:214;;:::o;2235:1961:20:-;2400:10;;2438:13;;2428:23;;2420:66;;;;;-1:-1:-1;;;2420:66:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;2497:14;2514:12;:10;:12::i;:::-;2497:29;;2536:15;2554:27;2568:4;2574:6;2554:13;:27::i;:::-;2536:45;;2592:22;2624:25;2659:17;2691:9;2686:1149;2707:6;2702:1;:11;2686:1149;;2734:10;2747:3;2751:1;2747:6;;;;;;;;;;;;;;2734:19;;2771:20;:2;:18;:20::i;:::-;2767:1058;;;2811:46;2825:4;2831:2;2835:6;2842:1;2835:9;;;;;;;;;;;;;;2846:10;2811:13;:46::i;:::-;2767:1058;;;2882:44;:2;2904:21;2882;:44::i;:::-;2878:947;;;2946:47;2955:4;2961:2;2965:6;2972:1;2965:9;;;;;;;;;;;;;;2976:10;2988:4;2946:8;:47::i;:::-;3016:30;;3043:2;;3039:1;;-1:-1:-1;;;;;3016:30:20;;;-1:-1:-1;;;;;;;;;;;3016:30:20;3039:1;;3016:30;3064:24;3091:50;:2;3119:21;3091:27;:50::i;:::-;3064:77;-1:-1:-1;3163:19:20;3159:578;;3223:16;3206:33;;3281:1;3261:21;;3159:578;;;3353:14;3333:16;:34;3329:390;;3395:65;3420:4;3426:14;3442:17;3395:24;:65::i;:::-;3503:16;-1:-1:-1;3621:1:20;;3545:30;;;;;3503:16;3329:390;;;3677:19;;;;;3329:390;2878:947;;-1:-1:-1;2715:3:20;;2686:1149;;;-1:-1:-1;3849:19:20;;3845:277;;3884:65;3909:4;3915:14;3931:17;3884:24;:65::i;:::-;-1:-1:-1;;;;;4080:18:20;;;;;;:12;:18;;;;;:31;;3963:30;;;4080:31;;;;;;3845:277;4173:1;-1:-1:-1;;;;;4137:52:20;4159:4;-1:-1:-1;;;;;4137:52:20;4151:6;-1:-1:-1;;;;;4137:52:20;;4177:3;4182:6;4137:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2235:1961;;;;;;;;;:::o;4385:205:25:-;4517:28;4532:12;:10;:12::i;4517:28::-;4555;4561:2;4565:5;4572:4;;4555:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4578:4:25;;-1:-1:-1;4555:5:25;;-1:-1:-1;;4555:28:25:i;:::-;4385:205;;;;:::o;1114:94:2:-;1169:7;1195:6;-1:-1:-1;;;;;1195:6:2;1114:94;:::o;2846:102:19:-;2934:7;2927:14;;;;;;;;-1:-1:-1;;2927:14:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2902:13;;2927:14;;2934:7;;2927:14;;2934:7;2927:14;;;;;;;;;;;;;;;;;;;;;;;;694:120:1;747:31;765:12;:10;:12::i;747:31::-;788:19;799:7;788:10;:19::i;:::-;694:120;:::o;929:185::-;972:15;990:12;:10;:12::i;:::-;972:30;;1012:23;1027:7;1012:14;:23::i;:::-;-1:-1:-1;;;;;1045:17:1;;1065:5;1045:17;;;:8;:17;;;;;;:25;;-1:-1:-1;;1045:25:1;;;1085:22;;;1065:5;1085:22;929:185;:::o;9574:188:19:-;9712:43;9736:8;9746;9712:23;:43::i;339:40:1:-;;;;;;;;;;;;;;;:::o;4905:122:10:-;4977:4;5000:20;:2;:18;:20::i;5947:300:19:-;6105:135;6132:4;6150:2;6166:5;6185:4;6226;6105:13;:135::i;5788:282:10:-;5861:7;5884:44;:2;5906:21;5884;:44::i;:::-;5880:184;;;5992:1;5967:11;;;:7;:11;;;;;;-1:-1:-1;;;;;5951:43:10;;:51;;6001:1;5951:51;;;5997:1;5951:51;5944:58;;;;;;5880:184;-1:-1:-1;6040:13:10;;;;:9;:13;;;;;;6033:20;;2430:511:6;2599:31;2617:12;:10;:12::i;2599:31::-;2657:8;2690:26;;;:55;;;;-1:-1:-1;2720:25:6;;;2690:55;2682:94;;;;;-1:-1:-1;;;2682:94:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;2791:9;2786:149;2811:6;2806:1;:11;2786:149;;2857:9;;2867:1;2857:12;;;;;;;;;;;;;-1:-1:-1;;;;;2857:12:6;-1:-1:-1;;;;;2838:45:6;;2892:4;2899:8;;2908:1;2899:11;;;;;;;;;;;;;-1:-1:-1;;;;;2899:11:6;2912:8;;2921:1;2912:11;;;;;;;;;;;;;2838:86;;;;;;;;;;;;;-1:-1:-1;;;;;2838:86:6;;;;;;-1:-1:-1;;;;;2838:86:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2819:3;;;;;2786:149;;6460:94:25;6502:16;6537:10;:8;:10::i;:::-;6530:17;;6460:94;:::o;5071:254:10:-;5148:7;5175:47;:5;5200:21;5175:24;:47::i;:::-;5167:81;;;;;-1:-1:-1;;;5167:81:10;;;;;;;;;;;;-1:-1:-1;;;5167:81:10;;;;;;;;;;;;;;;5265:53;:5;5296:21;5265:30;:53::i;2990:218:19:-;3140:1;3112:14;;;:7;:14;;;;;;3063:13;;-1:-1:-1;;;;;3096:46:19;3088:86;;;;;-1:-1:-1;;;3088:86:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;3191:10;3195:5;3191:3;:10::i;3479:146:25:-;3546:31;3564:12;:10;:12::i;3546:31::-;3587;3605:12;3587:17;:31::i;5535:286::-;5733:28;5748:12;:10;:12::i;5733:28::-;5771:43;5784:10;;5796:3;;5801:6;;5809:4;;5771:12;:43::i;9809:264:19:-;9995:4;10022:44;10045:10;10057:8;10022:22;:44::i;:::-;10015:51;9809:264;-1:-1:-1;;;9809:264:19:o;8159:890::-;8378:14;8395:12;:10;:12::i;:::-;8378:29;-1:-1:-1;;;;;;8425:16:19;;8417:56;;;;;-1:-1:-1;;;8417:56:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;8483:15;8501:27;8515:4;8521:6;8501:13;:27::i;:::-;8483:45;;8543:20;:2;:18;:20::i;:::-;8539:341;;;8579:50;8597:4;8603:2;8607;8611:5;8618:10;8579:17;:50::i;:::-;8539:341;;;8650:44;:2;8672:21;8650;:44::i;:::-;8646:234;;;8710:52;8723:4;8729:2;8733;8737:5;8744:10;8756:5;8710:12;:52::i;:::-;8800:2;8796;-1:-1:-1;;;;;8781:22:19;8790:4;-1:-1:-1;;;;;8781:22:19;-1:-1:-1;;;;;;;;;;;8781:22:19;;;;;;;;;8646:234;8924:2;-1:-1:-1;;;;;8895:43:19;8918:4;-1:-1:-1;;;;;8895:43:19;8910:6;-1:-1:-1;;;;;8895:43:19;;8928:2;8932:5;8895:43;;;;;;;;;;;;;;;;;;;;;;;;8952:15;:2;-1:-1:-1;;;;;8952:13:19;;:15::i;:::-;8948:95;;;8983:49;9006:4;9012:2;9016;9020:5;9027:4;8983:22;:49::i;4251:1412:20:-;4347:14;4364:12;:10;:12::i;:::-;4347:29;;4386:15;4404:27;4418:4;4424:6;4404:13;:27::i;:::-;4459:13;;4386:45;;-1:-1:-1;4442:14:20;4459:13;4508:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4508:21:20;;4482:47;;4540:22;4572:25;4612:9;4607:812;4628:6;4623:1;:11;4607:812;;4655:13;4671:6;4678:1;4671:9;;;;;;;;;;;;;;4655:25;;4706:1;4694:6;4701:1;4694:9;;;;;;;;;;;;;:13;;;;;4721:50;4730:4;4736:5;4743:6;4750:1;4743:9;;;;;;;;;;;;;;4754:10;4766:4;4721:8;:50::i;:::-;4790:33;;4817:5;;4813:1;;-1:-1:-1;;;;;4790:33:20;;;-1:-1:-1;;;;;;;;;;;4790:33:20;4813:1;;4790:33;4837:24;4864:53;:5;4895:21;4864:30;:53::i;:::-;4837:80;-1:-1:-1;4935:19:20;4931:478;;4991:16;4974:33;;5045:1;5025:21;;4931:478;;;5109:14;5089:16;:34;5085:310;;5147:65;5172:4;5178:14;5194:17;5147:24;:65::i;:::-;5251:16;5234:33;;5309:1;5289:21;;5085:310;;;5357:19;;;;;5085:310;-1:-1:-1;;4636:3:20;;4607:812;;;-1:-1:-1;5433:19:20;;5429:157;;5468:65;5493:4;5499:14;5515:17;5468:24;:65::i;:::-;-1:-1:-1;;;;;5547:18:20;;;;;;:12;:18;;;;;:28;;;;;;;5429:157;5637:1;-1:-1:-1;;;;;5601:55:20;5623:4;-1:-1:-1;;;;;5601:55:20;5615:6;-1:-1:-1;;;;;5601:55:20;;5641:6;5649;5601:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4251:1412;;;;;;;;:::o;1448:197:2:-;1527:31;1545:12;:10;:12::i;1527:31::-;1568:6;:17;;-1:-1:-1;;1568:17:2;-1:-1:-1;;;;;1568:17:2;;;;;;;;;1600:38;;1568:17;;1621:6;;;1600:38;;1568:6;1600:38;1448:197;:::o;6294:1689:19:-;-1:-1:-1;;;;;6444:16:19;;6436:56;;;;;-1:-1:-1;;;6436:56:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;6502:14;6519:12;:10;:12::i;:::-;6502:29;;6541:15;6559:27;6573:4;6579:6;6559:13;:27::i;:::-;6614:13;;6541:45;;-1:-1:-1;6597:14:19;6614:13;6663:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6663:21:19;;6637:47;;6695:22;6727:25;6767:9;6762:812;6783:6;6778:1;:11;6762:812;;6810:13;6826:6;6833:1;6826:9;;;;;;;;;;;;;;6810:25;;6861:1;6849:6;6856:1;6849:9;;;;;;;;;;;;;:13;;;;;6876:50;6889:4;6895:2;6899:5;6906:1;6909:10;6921:4;6876:12;:50::i;:::-;6964:5;6960:2;-1:-1:-1;;;;;6945:25:19;6954:4;-1:-1:-1;;;;;6945:25:19;-1:-1:-1;;;;;;;;;;;6945:25:19;;;;;;;;;6984:24;7011:53;:5;7042:21;7011:30;:53::i;:::-;6984:80;-1:-1:-1;7082:19:19;7078:486;;7138:16;7121:33;;7192:1;7172:21;;7078:486;;;7256:14;7236:16;:34;7232:318;;7294:73;7323:4;7329:2;7333:14;7349:17;7294:28;:73::i;:::-;7406:16;7389:33;;7464:1;7444:21;;7232:318;;;7512:19;;;;;7232:318;-1:-1:-1;;6791:3:19;;6762:812;;;-1:-1:-1;7588:19:19;;7584:181;;7623:73;7652:4;7658:2;7662:14;7678:17;7623:28;:73::i;:::-;7710:44;7737:4;7743:2;7747:6;7710:26;:44::i;:::-;7814:2;-1:-1:-1;;;;;7780:53:19;7808:4;-1:-1:-1;;;;;7780:53:19;7794:12;:10;:12::i;:::-;-1:-1:-1;;;;;7780:53:19;;7818:6;7826;7780:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7847:15;:2;-1:-1:-1;;;;;7847:13:19;;:15::i;:::-;:46;;;;;7866:27;7890:2;7866:23;:27::i;:::-;7843:134;;;7909:57;7937:4;7943:2;7947:6;7955;7909:57;;;;;;;;;;;;:27;:57::i;:::-;6294:1689;;;;;;;;;:::o;875:200:11:-;968:4;-1:-1:-1;;;991:12:11;;:17;;;;:77;;;1017:46;1042:20;1017:24;:46::i;:::-;1012:51;;;:56;;;875:200;-1:-1:-1;;875:200:11:o;1156:216:20:-;1241:4;-1:-1:-1;;;;;;1264:61:20;;-1:-1:-1;;;1264:61:20;;:101;;;1329:36;1353:11;1329:23;:36::i;5956:183:25:-;6061:15;6095:37;:35;:37::i;7572:158:10:-;7656:4;7688:6;-1:-1:-1;;;;;7680:14:10;:4;-1:-1:-1;;;;;7680:14:10;;7679:44;;;-1:-1:-1;;;;;;;7699:16:10;;;;;;;:10;:16;;;;;;;;:24;;;;;;;;;;;;;;;7572:158::o;1120:126:1:-;-1:-1:-1;;;;;1193:17:1;;;;;;:8;:17;;;;;;;;1185:54;;;;;-1:-1:-1;;;1185:54:1;;;;;;;;;;;;;;;;;;;;;;;;;;;17763:2096:19;-1:-1:-1;;;;;17938:16:19;;17930:52;;;;;-1:-1:-1;;;17930:52:19;;;;;;;;;;;;-1:-1:-1;;;17930:52:19;;;;;;;;;;;;;;;18009:10;;18047:13;;18037:23;;18029:66;;;;;-1:-1:-1;;;18029:66:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;18106:22;18138:25;18173:17;18205:9;18200:1207;18221:6;18216:1;:11;18200:1207;;18248:10;18261:3;18265:1;18261:6;;;;;;;;;;;;;;18248:19;;18281:13;18297:6;18304:1;18297:9;;;;;;;;;;;;;;18281:25;;18324:20;:2;:18;:20::i;:::-;18320:1077;;;18364:28;18378:2;18382;18386:5;18364:13;:28::i;:::-;18320:1077;;;18417:44;:2;18439:21;18417;:44::i;:::-;18413:984;;;18481:29;18490:2;18494;18498:5;18505:4;18481:8;:29::i;:::-;18533:28;;18558:2;;-1:-1:-1;;;;;18533:28:19;;;18550:1;;-1:-1:-1;;;;;;;;;;;18533:28:19;18550:1;;18533:28;18579:24;18606:50;:2;18634:21;18606:27;:50::i;:::-;18579:77;-1:-1:-1;18678:19:19;18674:635;;18738:16;18721:33;;18796:1;18776:21;;18674:635;;;18868:14;18848:16;:34;18844:447;;18943:17;18910:9;:25;18920:14;18910:25;;;;;;;;;;;:29;18936:2;-1:-1:-1;;;;;18910:29:19;-1:-1:-1;;;;;18910:29:19;;;;;;;;;;;;;:50;;;;;;;;;;;19015:17;18986:9;:25;18996:14;18986:25;;;;;;;;;;;;:46;;;;;;;;;;;19075:16;19058:33;;19130:17;19117:30;;;;19193:1;19173:21;;18844:447;;;19249:19;;;;;18844:447;18413:984;;-1:-1:-1;;18229:3:19;;18200:1207;;;-1:-1:-1;19421:19:19;;19417:247;;19456:25;;;;:9;:25;;;;;;;;-1:-1:-1;;;;;19456:29:19;;;;;;;;;;;:50;;;;;;19520:25;;;:9;:25;;;;;:46;;;;;;19624:16;;:12;:16;;;;;:29;;19580:30;;;19624:29;;;;;19417:247;-1:-1:-1;;;;;19679:56:19;;19715:1;19693:12;:10;:12::i;:::-;-1:-1:-1;;;;;19679:56:19;;19723:3;19728:6;19679:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19749:15;:2;-1:-1:-1;;;;;19749:13:19;;:15::i;:::-;19745:108;;;19780:62;19816:1;19820:2;19824:3;19829:6;19837:4;19780:27;:62::i;808:159:9:-;865:13;921:15;938:20;:2;:18;:20::i;:::-;904:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;904:55:9;;;;;;;;;;;;;;;;;;;-1:-1:-1;;904:55:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;890:70;;808:159;;;:::o;762:107:11:-;-1:-1:-1;;;845:12:11;:17;;762:107::o;5798:474:20:-;5944:10;5936:44;;;;;-1:-1:-1;;;5936:44:20;;;;;;;;;;;;-1:-1:-1;;;5936:44:20;;;;;;;;;;;;;;;5998:10;5990:53;;;;;-1:-1:-1;;;5990:53:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;6053:15;6071:13;;;:9;:13;;;;;;;;-1:-1:-1;;;;;6071:19:20;;;;;;;;;;6108:16;;;;6100:58;;;;;-1:-1:-1;;;6100:58:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;6168:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;6168:19:20;;;;;;;;;;;6190:15;;;;6168:37;;;6243:13;;;:9;:13;;-1:-1:-1;6243:13:20;;;:22;;;;;;;;5798:474::o;6278:792::-;6449:5;6458:1;6449:10;6441:49;;;;;-1:-1:-1;;;6441:49:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;6500:13;6516:11;;;:7;:11;;;;;;-1:-1:-1;;;;;6545:31:20;;;;;;;6537:68;;;;;-1:-1:-1;;;6537:68:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;6620:10;6615:163;;-1:-1:-1;;;6655:34:20;;:39;;;;6654:78;;-1:-1:-1;6715:17:20;;;;:13;:17;;;;;;-1:-1:-1;;;;;6715:17:20;6699:12;:10;:12::i;:::-;-1:-1:-1;;;;;6699:33:20;;6654:78;6646:121;;;;;-1:-1:-1;;;6646:121:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;6787:11;;;;:7;:11;;;;;-1:-1:-1;;;6787:30:20;;6833:7;6828:236;;6856:85;6881:4;6887:50;:2;6915:21;6887:27;:50::i;:::-;6939:1;6856:24;:85::i;:::-;-1:-1:-1;;;;;7035:18:20;;;;;;:12;:18;;;;;7033:20;;-1:-1:-1;;7033:20:20;;;6828:236;6278:792;;;;;;:::o;10847:737:19:-;-1:-1:-1;;;;;11014:16:19;;11006:56;;;;;-1:-1:-1;;;11006:56:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;11072:14;11089:12;:10;:12::i;:::-;11072:29;;11111:15;11129:27;11143:4;11149:6;11129:13;:27::i;:::-;11111:45;;11167:51;11180:4;11186:2;11190:5;11197:1;11200:10;11212:5;11167:12;:51::i;:::-;11253:5;11249:2;-1:-1:-1;;;;;11234:25:19;11243:4;-1:-1:-1;;;;;11234:25:19;-1:-1:-1;;;;;;;;;;;11234:25:19;;;;;;;;;11303:2;-1:-1:-1;;;;;11274:42:19;11297:4;-1:-1:-1;;;;;11274:42:19;11289:6;-1:-1:-1;;;;;11274:42:19;;11307:5;11314:1;11274:42;;;;;;;;;;;;;;;;;;;;;;;;11330:15;:2;-1:-1:-1;;;;;11330:13:19;;:15::i;:::-;11326:252;;;11365:27;11389:2;11365:23;:27::i;:::-;11361:207;;;11412:48;11435:4;11441:2;11445:5;11452:1;11455:4;11412:22;:48::i;:::-;11361:207;;;11485:4;11481:87;;;11509:44;11531:4;11537:2;11541:5;11548:4;11509:21;:44::i;11775:2143::-;-1:-1:-1;;;;;11972:16:19;;11964:56;;;;;-1:-1:-1;;;11964:56:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;12047:10;;12085:13;;12075:23;;12067:66;;;;;-1:-1:-1;;;12067:66:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;12143:14;12160:12;:10;:12::i;:::-;12143:29;;12182:15;12200:27;12214:4;12220:6;12200:13;:27::i;:::-;12182:45;;12238:22;12270:25;12305:17;12337:9;12332:1165;12353:6;12348:1;:11;12332:1165;;12380:10;12393:3;12397:1;12393:6;;;;;;;;;;;;;;12380:19;;12417:20;:2;:18;:20::i;:::-;12413:1074;;;12457:54;12475:4;12481:2;12485;12489:6;12496:1;12489:9;;;;;;;;;;;;;;12500:10;12457:17;:54::i;:::-;12413:1074;;;12536:44;:2;12558:21;12536;:44::i;:::-;12532:955;;;12600:55;12613:4;12619:2;12623;12627:6;12634:1;12627:9;;;;;;;;;;;;;;12638:10;12650:4;12600:12;:55::i;:::-;12697:2;12693;-1:-1:-1;;;;;12678:22:19;12687:4;-1:-1:-1;;;;;12678:22:19;-1:-1:-1;;;;;;;;;;;12678:22:19;;;;;;;;;12718:24;12745:50;:2;12773:21;12745:27;:50::i;:::-;12718:77;-1:-1:-1;12817:19:19;12813:586;;12877:16;12860:33;;12935:1;12915:21;;12813:586;;;13007:14;12987:16;:34;12983:398;;13049:73;13078:4;13084:2;13088:14;13104:17;13049:28;:73::i;:::-;13165:16;-1:-1:-1;13283:1:19;;13207:30;;;;;13165:16;12983:398;;;13339:19;;;;;12983:398;12532:955;;-1:-1:-1;12361:3:19;;12332:1165;;;-1:-1:-1;13511:19:19;;13507:228;;13546:73;13575:4;13581:2;13585:14;13601:17;13546:28;:73::i;:::-;13633:30;;13677:47;13704:4;13710:2;13633:30;13677:26;:47::i;:::-;13784:2;-1:-1:-1;;;;;13750:50:19;13778:4;-1:-1:-1;;;;;13750:50:19;13764:12;:10;:12::i;:::-;-1:-1:-1;;;;;13750:50:19;;13788:3;13793:6;13750:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13814:15;:2;-1:-1:-1;;;;;13814:13:19;;:15::i;:::-;13810:102;;;13845:56;13873:4;13879:2;13883:3;13888:6;13896:4;13845:27;:56::i;:::-;11775:2143;;;;;;;;;;;:::o;14190:708::-;-1:-1:-1;;;;;14327:16:19;;14319:52;;;;;-1:-1:-1;;;14319:52:19;;;;;;;;;;;;-1:-1:-1;;;14319:52:19;;;;;;;;;;;;;;;14389:47;:5;14414:21;14389:24;:47::i;:::-;14381:81;;;;;-1:-1:-1;;;14381:81:19;;;;;;;;;;;;-1:-1:-1;;;14381:81:19;;;;;;;;;;;;;;;14473:29;14482:2;14486:5;14493:1;14496:5;14473:8;:29::i;:::-;14518:31;;14543:5;;-1:-1:-1;;;;;14518:31:19;;;14535:1;;-1:-1:-1;;;;;;;;;;;14518:31:19;14535:1;;14518:31;-1:-1:-1;;;;;14564:54:19;;14601:1;14579:12;:10;:12::i;:::-;-1:-1:-1;;;;;14564:54:19;;14609:5;14616:1;14564:54;;;;;;;;;;;;;;;;;;;;;;;;14632:15;:2;-1:-1:-1;;;;;14632:13:19;;:15::i;:::-;14628:264;;;14667:27;14691:2;14667:23;:27::i;:::-;14663:219;;;14714:54;14745:1;14749:2;14753:5;14760:1;14763:4;14714:22;:54::i;:::-;14663:219;;;14793:4;14789:93;;;14817:50;14847:1;14851:2;14855:5;14862:4;14817:21;:50::i;15071:1623::-;-1:-1:-1;;;;;15155:16:19;;15147:52;;;;;-1:-1:-1;;;15147:52:19;;;;;;;;;;;;-1:-1:-1;;;15147:52:19;;;;;;;;;;;;;;;15227:13;;15210:14;15227:13;15276:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15276:21:19;;15250:47;;15308:22;15340:25;15380:9;15375:936;15396:6;15391:1;:11;15375:936;;15423:13;15439:6;15446:1;15439:9;;;;;;;;;;;;;;15423:25;;15470:47;15495:21;15470:5;:24;;:47;;;;:::i;:::-;15462:81;;;;;-1:-1:-1;;;15462:81:19;;;;;;;;;;;;-1:-1:-1;;;15462:81:19;;;;;;;;;;;;;;;15569:1;15557:6;15564:1;15557:9;;;;;;;;;;;;;:13;;;;;15584:28;15593:2;15597:5;15604:1;15607:4;15584:8;:28::i;:::-;15631:31;;15656:5;;-1:-1:-1;;;;;15631:31:19;;;15648:1;;-1:-1:-1;;;;;;;;;;;15631:31:19;15648:1;;15631:31;15676:24;15703:53;:5;15734:21;15703:30;:53::i;:::-;15676:80;-1:-1:-1;15774:19:19;15770:531;;15830:16;15813:33;;15884:1;15864:21;;15770:531;;;15948:14;15928:16;:34;15924:363;;15986:25;;;;:9;:25;;;;;;;;-1:-1:-1;;;;;15986:29:19;;;;;;;;;:50;;;;;;16058:25;;;:9;:25;;;;;;:46;;;;;;;;-1:-1:-1;;16143:16:19;15924:363;;;16249:19;;;;;15924:363;-1:-1:-1;;15404:3:19;;15375:936;;;-1:-1:-1;16321:25:19;;;;:9;:25;;;;;;;;-1:-1:-1;;;;;16321:29:19;;;;;;;;;;;:50;;;;;;16381:25;;;:9;:25;;;;;:46;;;;;;16437:16;;;:12;:16;;;;;:26;;;;;;16321:29;16493:12;:10;:12::i;:::-;-1:-1:-1;;;;;16479:59:19;;16523:6;16531;16479:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16552:15;:2;-1:-1:-1;;;;;16552:13:19;;:15::i;:::-;:46;;;;;16571:27;16595:2;16571:23;:27::i;:::-;16548:140;;;16614:63;16650:1;16654:2;16658:6;16666;16614:63;;;;;;;;;;;;:27;:63::i;6918:232:10:-;6989:7;7017:54;:12;7049:21;7017:31;:54::i;:::-;7016:55;7008:95;;;;;-1:-1:-1;;;7008:95:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7120:23:10;;;;:9;:23;;;;;;-1:-1:-1;;;;;7120:23:10;;6918:232::o;16857:727:19:-;-1:-1:-1;;;;;17007:16:19;;16999:52;;;;;-1:-1:-1;;;16999:52:19;;;;;;;;;;;;-1:-1:-1;;;16999:52:19;;;;;;;;;;;;;;;17061:14;17078:12;:10;:12::i;:::-;17061:29;;17104:20;:2;:18;:20::i;:::-;17100:303;;;17140:28;17154:2;17158;17162:5;17140:13;:28::i;:::-;17100:303;;;17189:44;:2;17211:21;17189;:44::i;:::-;17185:218;;;17249:30;17258:2;17262;17266:5;17273;17249:8;:30::i;:::-;17298:28;;17323:2;;-1:-1:-1;;;;;17298:28:19;;;17315:1;;-1:-1:-1;;;;;;;;;;;17298:28:19;17315:1;;17298:28;17185:218;17418:49;;;;;;;;;;;;;;-1:-1:-1;;;;;17418:49:19;;;;17449:1;;17418:49;;;;;;;;;;;;;;17481:15;:2;-1:-1:-1;;;;;17481:13:19;;:15::i;:::-;17477:101;;;17512:55;17543:1;17547:2;17551;17555:5;17562:4;17512:22;:55::i;5369:235:10:-;5439:7;5490:14;;;:7;:14;;;;;;-1:-1:-1;;;;;5524:19:10;;5516:59;;;;;-1:-1:-1;;;5516:59:10;;;;;;;;;;;;;;;;;;;;;;;;;;;1770:136:2;1860:4;-1:-1:-1;;;;;1860:10:2;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1860:12:2;-1:-1:-1;;;;;1849:23:2;;;;;;1841:58;;;;;-1:-1:-1;;;1841:58:2;;;;;;;;;;;;;;;;;;;;;;;;;;;416:223:5;573:58;;;-1:-1:-1;;;;;573:58:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;573:58:5;;;538:94;;566:5;;538:27;:94::i;1081:190:11:-;1183:7;1218:46;1243:20;1218:24;:46::i;:::-;1217:47;1209:5;:55;1202:62;;1081:190;;;;:::o;7076:305:20:-;7292:23;;;;:9;:23;;;;;;;;-1:-1:-1;;;;;7292:29:20;;;;;;;;;;;:39;;;;;;;7341:23;;;:9;:23;;;;;;:33;;;;;;;;7076:305::o;1252:122:1:-;-1:-1:-1;;;;;1308:17:1;;;;;;:8;:17;;;;;;:24;;-1:-1:-1;;1308:24:1;1328:4;1308:24;;;1347:20;;;1308:17;1347:20;1252:122;:::o;4232:301:10:-;4326:14;4343:12;:10;:12::i;:::-;4326:29;;4385:6;-1:-1:-1;;;;;4373:18:10;:8;-1:-1:-1;;;;;4373:18:10;;;4365:55;;;;;-1:-1:-1;;;4365:55:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4430:18:10;;;;;;;:10;:18;;;;;;;;:28;;;;;;;;;;;;;:39;;-1:-1:-1;;4430:39:10;;;;;;;;;;4484:42;;;;;;;;;;;;;;;;;4232:301;;;:::o;6145:180:25:-;6248:16;6283:35;:33;:35::i;:::-;6276:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6276:42:25;;-1:-1:-1;;;;6145:180:25;:::o;6518:394:10:-;6603:54;:12;6635:21;6603:31;:54::i;:::-;6602:55;6594:95;;;;;-1:-1:-1;;;6594:95:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;6742:1;6707:23;;;:9;:23;;;;;;-1:-1:-1;;;;;6707:23:10;:37;6699:80;;;;;-1:-1:-1;;;6699:80:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;6815:12;:10;:12::i;:::-;6789:23;;;;:9;:23;;;;;:38;;-1:-1:-1;;6789:38:10;-1:-1:-1;;;;;6789:38:10;;;;;;;;;;6874:30;6789:23;6874:28;:30::i;:::-;6842:63;;6860:12;6842:63;;;;;;;;;;6518:394;:::o;20029:1526:19:-;20228:10;20263:20;;;:47;;;;-1:-1:-1;20287:23:19;;;20263:47;20255:90;;;;;-1:-1:-1;;;20255:90:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;20356:14;20373:12;:10;:12::i;:::-;20356:29;;20400:9;20395:1154;20416:6;20411:1;:11;20395:1154;;20443:10;20456;;20467:1;20456:13;;;;;;;;;;;;;-1:-1:-1;;;;;20456:13:19;20443:26;;20505:1;-1:-1:-1;;;;;20491:16:19;:2;-1:-1:-1;;;;;20491:16:19;;;20483:52;;;;;-1:-1:-1;;;20483:52:19;;;;;;;;;;;;-1:-1:-1;;;20483:52:19;;;;;;;;;;;;;;;20549:10;20562:3;;20566:1;20562:6;;;;;;;;;;;;;20549:19;;20582:13;20598:6;;20605:1;20598:9;;;;;;;;;;;;;20582:25;;20625:20;:2;:18;:20::i;:::-;20621:918;;;20665:28;20679:2;20683;20687:5;20665:13;:28::i;:::-;20716:49;;;;;;;;;;;;;;-1:-1:-1;;;;;20716:49:19;;;;20747:1;;20716:49;;;;;;;;;;;;;;20787:15;:2;-1:-1:-1;;;;;20787:13:19;;:15::i;:::-;20783:117;;;20826:55;20857:1;20861:2;20865;20869:5;20876:4;;20826:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20826:22:19;;-1:-1:-1;;;20826:55:19:i;:::-;20621:918;;;20924:44;:2;20946:21;20924;:44::i;:::-;20920:619;;;20988:30;20997:2;21001;21005:5;21012;20988:8;:30::i;:::-;21041:28;;21066:2;;-1:-1:-1;;;;;21041:28:19;;;21058:1;;-1:-1:-1;;;;;;;;;;;21041:28:19;21058:1;;21041:28;21092:45;;;;;;21135:1;21092:45;;;;;;-1:-1:-1;;;;;21092:45:19;;;;21123:1;;21092:45;;;;;;;;;;;;;;21159:15;:2;-1:-1:-1;;;;;21159:13:19;;:15::i;:::-;21155:296;;;21202:27;21226:2;21202:23;:27::i;:::-;21198:235;;;21257:51;21288:1;21292:2;21296;21300:1;21303:4;;21257:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21257:22:19;;-1:-1:-1;;;21257:51:19:i;:::-;21198:235;;;21363:47;21393:1;21397:2;21401;21405:4;;21363:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21363:21:19;;-1:-1:-1;;;21363:47:19:i;20920:619::-;20395:1154;;;20424:3;;;;;20395:1154;;4568:164:10;-1:-1:-1;;;;;4693:22:10;;;4670:4;4693:22;;;:10;:22;;;;;;;;:32;;;;;;;;;;;;;;;4568:164::o;22822:575:19:-;22992:10;22984:53;;;;;-1:-1:-1;;;22984:53:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;23055:10;23047:44;;;;;-1:-1:-1;;;23047:44:19;;;;;;;;;;;;-1:-1:-1;;;23047:44:19;;;;;;;;;;;;;;;23101:15;23119:13;;;:9;:13;;;;;;;;-1:-1:-1;;;;;23119:19:19;;;;;;;;;;23156:16;;;;23148:58;;;;;-1:-1:-1;;;23148:58:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;23228:2;-1:-1:-1;;;;;23220:10:19;:4;-1:-1:-1;;;;;23220:10:19;;23216:175;;23246:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;23246:19:19;;;;;;;;;;;23268:15;;;;23246:37;;;23354:17;;;;;;;;;:26;;;;;;;-1:-1:-1;22822:575:19:o;23403:768::-;23598:5;23607:1;23598:10;23590:49;;;;;-1:-1:-1;;;23590:49:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;23649:13;23665:11;;;:7;:11;;;;;;-1:-1:-1;;;;;23694:31:19;;;;;;;23686:68;;;;;-1:-1:-1;;;23686:68:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;23769:10;23764:163;;-1:-1:-1;;;23804:34:19;;:39;;;;23803:78;;-1:-1:-1;23864:17:19;;;;:13;:17;;;;;;-1:-1:-1;;;;;23864:17:19;23848:12;:10;:12::i;:::-;-1:-1:-1;;;;;23848:33:19;;23803:78;23795:121;;;;;-1:-1:-1;;;23795:121:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;23936:11;;;;:7;:11;;;;;-1:-1:-1;;;;;23950:20:19;;23936:34;;23985:7;23980:185;;24008:39;24035:4;24041:2;24045:1;24008:26;:39::i;:::-;24061:93;24090:4;24096:2;24100:50;:2;24128:21;24100:27;:50::i;:::-;24152:1;24061:28;:93::i;913:377:7:-;1229:20;1275:8;;;913:377::o;8201:317:10:-;-1:-1:-1;;;;;;;;8378:43:10;;1559:10;8422:12;:10;:12::i;:::-;8436:4;8442:2;8446:5;8453:4;8378:80;;;;;;;;;;;;;-1:-1:-1;;;;;8378:80:10;;;;;;-1:-1:-1;;;;;8378:80:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8378:80:10;-1:-1:-1;;;;;;8378:101:10;;8370:141;;;;;-1:-1:-1;;;8370:141:10;;;;;;;;;;;;;;;;;;;;;;;;;;;24564:434:19;24743:2;-1:-1:-1;;;;;24735:10:19;:4;-1:-1:-1;;;;;24735:10:19;;24731:261;;24834:23;;;;:9;:23;;;;;;;;-1:-1:-1;;;;;24834:29:19;;;;;;;;;;;:39;;;;;;;24944:27;;;;;;;:37;;;;;;;24564:434::o;24177:381::-;24324:2;-1:-1:-1;;;;;24316:10:19;:4;-1:-1:-1;;;;;24316:10:19;;24312:240;;-1:-1:-1;;;;;24415:18:19;;;;;;;:12;:18;;;;;;:28;;;;;;;24515:16;;;;;;:26;;;;;;24177:381;;;:::o;25210:871::-;25374:90;;;-1:-1:-1;;;25374:90:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;25374:90:19;;;25568:21;;25616:11;;25285:4;25699:19;;;25285:4;;;;;25374:90;;;25616:11;;25568:21;25374:90;25760:9;25753:5;25742:63;25731:74;;25846:6;25840:13;25830:23;;;;;26036:3;26024:9;:15;26017:23;;;;26057:7;:17;;;;;26068:6;26057:17;26050:24;25210:871;-1:-1:-1;;;;;25210:871:19:o;9002:389:10:-;-1:-1:-1;;;;;;;;9217:48:10;;1721:10;9266:12;:10;:12::i;:::-;9280:4;9286:3;9291:6;9299:4;9217:87;;;;;;;;;;;;;-1:-1:-1;;;;;9217:87:10;;;;;;-1:-1:-1;;;;;9217:87:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1277:158:11;1427:1;1396:3;:26;;;;1390:33;-1:-1:-1;;1389:39:11;;1277:158::o;2183:352:19:-;2268:4;-1:-1:-1;;;;;;2303:40:19;;-1:-1:-1;;;2303:40:19;;:104;;-1:-1:-1;;;;;;;2359:48:19;;-1:-1:-1;;;2359:48:19;2303:104;:173;;;-1:-1:-1;;;;;;;2423:53:19;;-1:-1:-1;;;2423:53:19;2303:173;:225;;;;2492:36;2516:11;2492:23;:36::i;743:904:33:-;796:15;851:10;796:15;896:27;:25;:27::i;:::-;871:52;;958:18;-1:-1:-1;;;;;937:40:33;:9;-1:-1:-1;;;;;937:40:33;;:76;;;;994:19;-1:-1:-1;;;;;981:32:33;:9;-1:-1:-1;;;;;981:32:33;;937:76;933:166;;;1082:6;-1:-1:-1;1075:13:33;;-1:-1:-1;1075:13:33;933:166;-1:-1:-1;;;;;1496:22:33;;1509:9;1496:22;;;;:78;;;1522:18;-1:-1:-1;;;;;1522:33:33;;1556:6;1564:9;1522:52;;;;;;;;;;;;;-1:-1:-1;;;;;1522:52:33;;;;;;-1:-1:-1;;;;;1522:52:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1522:52:33;1496:78;1492:122;;;1597:6;-1:-1:-1;1590:13:33;;-1:-1:-1;1590:13:33;1492:122;-1:-1:-1;1631:9:33;-1:-1:-1;743:904:33;:::o;21690:437:19:-;21809:10;21801:44;;;;;-1:-1:-1;;;21801:44:19;;;;;;;;;;;;-1:-1:-1;;;21801:44:19;;;;;;;;;;;;;;;21855:14;21872:13;;;:9;:13;;;;;;21915:14;;;21947:18;;;21939:57;;;;;-1:-1:-1;;;21939:57:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;22006:13;;;;:9;:13;;;;;;;;:25;;;;22094:9;:13;;;;;-1:-1:-1;;;;;22094:17:19;;;;;;;;;-1:-1:-1;22094:17:19;;;:26;;;;;;;21690:437::o;22133:683::-;22269:5;22278:1;22269:10;22261:49;;;;;-1:-1:-1;;;22261:49:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;22328:11;;;;:7;:11;;;;;;:16;22320:58;;;;;-1:-1:-1;;;22320:58:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;22389:11;;;;:7;:11;;;;;-1:-1:-1;;;;;22403:20:19;;22389:34;;22439:7;22434:376;;22462:20;22485:50;:2;22513:21;22485:27;:50::i;:::-;22701:23;;;;:9;:23;;;;;;;;22699:25;;;;;;;;;22740:9;:23;;;;;-1:-1:-1;;;;;22740:27:19;;;;;;;;;22738:29;;;;;;22783:12;:16;;;;;;22781:18;;;;;;;-1:-1:-1;22133:683:19;;;;:::o;276:546:8:-;339:13;368:10;364:51;;-1:-1:-1;394:10:8;;;;;;;;;;;;-1:-1:-1;;;394:10:8;;;;;;364:51;439:5;424:12;478:75;485:9;;478:75;;510:8;;540:2;532:10;;;;478:75;;;562:19;594:6;584:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;584:17:8;-1:-1:-1;654:5:8;;-1:-1:-1;562:39:8;-1:-1:-1;;;627:10:8;;669:116;676:9;;669:116;;745:2;738:4;:9;732:2;:16;719:31;;701:6;708:7;;;;;;;701:15;;;;;;;;;;;:49;;;;;;;;;;-1:-1:-1;772:2:8;764:10;;;;669:116;;;-1:-1:-1;808:6:8;276:546;-1:-1:-1;;;;276:546:8:o;26499:335:19:-;-1:-1:-1;;;;;;;;26668:36:19;;;26705:12;:10;:12::i;:::-;26719:4;26725:5;26732:4;26668:69;;;;;;;;;;;;;-1:-1:-1;;;;;26668:69:19;;;;;;-1:-1:-1;;;;;26668:69:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26668:69:19;-1:-1:-1;;;;;;26668:106:19;;26647:180;;;;;-1:-1:-1;;;26647:180:19;;;;;;;;;;;;;;;;;;;;;;;;;;;1147:870:5;1272:5;1296:19;-1:-1:-1;;;;;1296:17:5;;;:19::i;:::-;1288:58;;;;;-1:-1:-1;;;1288:58:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;1417:12;1431:17;1452:6;-1:-1:-1;;;;;1452:11:5;1464:8;1452:21;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1452:21:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1416:57;;;;1487:7;1483:528;;;1514:11;;:16;1510:122;;1569:4;1558:24;;;;;;;;;;;;;;;-1:-1:-1;1558:24:5;1550:67;;;;;-1:-1:-1;;;1550:67:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;1483:528;;;1720:11;;1716:95;;1756:40;;;-1:-1:-1;;;1756:40:5;;;;;;;;;;;;;;;;;;;;;;;;;;;1716:95;1938:4;1932:11;1982:4;1975;1971:2;1967:13;1960:27;1653:670:33;1704:14;;1758:10;-1:-1:-1;;;;;1803:18:33;1782:40;;;;:76;;;1839:19;-1:-1:-1;;;;;1826:32:33;:9;-1:-1:-1;;;;;1826:32:33;;1782:76;1778:197;;;1927:37;:35;:37::i;:::-;1920:44;;;;;;;1778:197;-1:-1:-1;;;;;2122:22:33;;2135:9;2122:22;;;;:99;;;2148:18;-1:-1:-1;;;;;2148:33:33;;2182:27;:25;:27::i;:::-;2211:9;2148:73;;;;;;;;;;;;;-1:-1:-1;;;;;2148:73:33;;;;;;-1:-1:-1;;;;;2148:73:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2148:73:33;2122:99;2118:174;;;2244:37;:35;:37::i;2118:174::-;2308:8;;2301:15;;;;;1653:670;;;:::o;2760:444:10:-;2845:4;-1:-1:-1;;;;;;2880:40:10;;-1:-1:-1;;;2880:40:10;;:97;;-1:-1:-1;;;;;;;2936:41:10;;-1:-1:-1;;;2936:41:10;2880:97;:165;;;-1:-1:-1;;;;;;;2993:52:10;;-1:-1:-1;;;2993:52:10;2880:165;:240;;;-1:-1:-1;;;;;;;3061:59:10;;-1:-1:-1;;;3061:59:10;2880:240;:317;;;-1:-1:-1;;;;;;;;3136:61:10;-1:-1:-1;;;3136:61:10;;2760:444::o;103:519:32:-;-1:-1:-1;;585:14:32;581:23;568:37;564:2;560:46;;536:80::o;628:149::-;706:14;;739:31;-1:-1:-1;;749:20:32;;706:14;;;739:31;:::i;:::-;732:38;;;;628:149;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:363:34;;;172:8;160:10;157:24;154:2;;;202:9;191;184:28;154:2;239:6;229:8;226:20;223:2;;;267:9;256;249:28;223:2;-1:-1:-1;;301:23:34;;;346:25;;;;;-1:-1:-1;144:233:34:o"
            },
            "methodIdentifiers": {
              "addMinter(address)": "983b2d56",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "baseMetadataURI()": "5b2bd79e",
              "batchBurnFrom(address,uint256[])": "f2472965",
              "batchBurnFrom(address,uint256[],uint256[])": "80534934",
              "batchMint(address,uint256[])": "4684d7e9",
              "batchTransferFrom(address,address,uint256[])": "f3993d11",
              "burnFrom(address,uint256,uint256)": "124d91e5",
              "collectionOf(uint256)": "c7778baa",
              "createCollection(uint256)": "d0011d9d",
              "creator(uint256)": "510b5158",
              "getApproved(uint256)": "081812fc",
              "isApprovedForAll(address,address)": "e985e9c5",
              "isFungible(uint256)": "adebf6f2",
              "isMinter(address)": "aa271e1a",
              "isTrustedForwarder(address)": "572b6c05",
              "mint(address,uint256)": "40c10f19",
              "msgData()": "c4c2bfdc",
              "name()": "06fdde03",
              "owner()": "8da5cb5b",
              "ownerOf(uint256)": "6352211e",
              "recoverERC20s(address[],address[],uint256[])": "73c8a958",
              "recoverERC721s(address[],address[],uint256[])": "c3666c36",
              "renounceMinter()": "98650275",
              "safeBatchMint(address,uint256[],uint256[],bytes)": "0d6a5bbb",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeDeliver(address[],uint256[],uint256[],bytes)": "e8ab9ccc",
              "safeMint(address,uint256,bytes)": "8832e6e3",
              "safeMint(address,uint256,uint256,bytes)": "5cfa9297",
              "safeTransferFrom(address,address,uint256)": "42842e0e",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "setBaseMetadataURI(string)": "7e518ec8",
              "supportsInterface(bytes4)": "01ffc9a7",
              "symbol()": "95d89b41",
              "tokenURI(uint256)": "c87b56dd",
              "totalSupply(uint256)": "bd85b039",
              "transferFrom(address,address,uint256)": "23b872dd",
              "transferOwnership(address)": "f2fde38b",
              "uri(uint256)": "0e89341c"
            }
          }
        }
      },
      "contracts/token/ERC721/interfaces/IERC721.sol": {
        "IERC721": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "balance",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "getApproved",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "getApproved(uint256)": "081812fc",
              "isApprovedForAll(address,address)": "e985e9c5",
              "ownerOf(uint256)": "6352211e",
              "safeTransferFrom(address,address,uint256)": "42842e0e",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "setApprovalForAll(address,bool)": "a22cb465",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          }
        }
      },
      "contracts/token/ERC721/interfaces/IERC721BatchTransfer.sol": {
        "IERC721BatchTransfer": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "tokenIds",
                  "type": "uint256[]"
                }
              ],
              "name": "batchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "batchTransferFrom(address,address,uint256[])": "f3993d11"
            }
          }
        }
      },
      "contracts/token/ERC721/interfaces/IERC721Metadata.sol": {
        "IERC721Metadata": {
          "abi": [
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "tokenURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "name()": "06fdde03",
              "symbol()": "95d89b41",
              "tokenURI(uint256)": "c87b56dd"
            }
          }
        }
      },
      "contracts/token/ERC721/interfaces/IERC721Receiver.sol": {
        "IERC721Receiver": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "onERC721Received",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "onERC721Received(address,address,uint256,bytes)": "150b7a02"
            }
          }
        }
      },
      "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IERC2771.sol": {
        "IERC2771": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "forwarder",
                  "type": "address"
                }
              ],
              "name": "isTrustedForwarder",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "isTrustedForwarder(address)": "572b6c05"
            }
          }
        }
      },
      "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol": {
        "IForwarderRegistry": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "isForwarderFor",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "isForwarderFor(address,address)": "e60125d6"
            }
          }
        }
      },
      "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingAppendedCallData.sol": {
        "UsingAppendedCallData": {
          "abi": [],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {}
          }
        }
      },
      "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol": {
        "UsingUniversalForwarding": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "forwarder",
                  "type": "address"
                }
              ],
              "name": "isTrustedForwarder",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "isTrustedForwarder(address)": "572b6c05"
            }
          }
        }
      }
    },
    "sources": {
      "@animoca/ethereum-contracts-core/contracts/access/IERC173.sol": {
        "ast": {
          "absolutePath": "@animoca/ethereum-contracts-core/contracts/access/IERC173.sol",
          "exportedSymbols": {
            "IERC173": [
              22
            ]
          },
          "id": 23,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:0"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 2,
                "nodeType": "StructuredDocumentation",
                "src": "66:118:0",
                "text": " @title ERC-173 Contract Ownership Standard\n Note: the ERC-165 identifier for this interface is 0x7f5828d0"
              },
              "fullyImplemented": false,
              "id": 22,
              "linearizedBaseContracts": [
                22
              ],
              "name": "IERC173",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 3,
                    "nodeType": "StructuredDocumentation",
                    "src": "209:155:0",
                    "text": " Event emited when ownership of a contract changes.\n @param previousOwner the previous owner.\n @param newOwner the new owner."
                  },
                  "id": 9,
                  "name": "OwnershipTransferred",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 8,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "previousOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 9,
                        "src": "396:29:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "396:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 9,
                        "src": "427:24:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "427:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "395:57:0"
                  },
                  "src": "369:84:0"
                },
                {
                  "documentation": {
                    "id": 10,
                    "nodeType": "StructuredDocumentation",
                    "src": "459:88:0",
                    "text": " Get the address of the owner\n @return The address of the owner."
                  },
                  "functionSelector": "8da5cb5b",
                  "id": 15,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "owner",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "566:2:0"
                  },
                  "returnParameters": {
                    "id": 14,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 15,
                        "src": "592:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "592:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "591:9:0"
                  },
                  "scope": 22,
                  "src": "552:49:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 16,
                    "nodeType": "StructuredDocumentation",
                    "src": "607:299:0",
                    "text": " Set the address of the new owner of the contract\n Set newOwner to address(0) to renounce any ownership.\n @dev Emits an {OwnershipTransferred} event.\n @param newOwner The address of the new owner of the contract. Using the zero address means renouncing ownership."
                  },
                  "functionSelector": "f2fde38b",
                  "id": 21,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferOwnership",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 21,
                        "src": "938:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "938:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "937:18:0"
                  },
                  "returnParameters": {
                    "id": 20,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "964:0:0"
                  },
                  "scope": 22,
                  "src": "911:54:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 23,
              "src": "185:782:0"
            }
          ],
          "src": "33:935:0"
        },
        "id": 0
      },
      "@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol": {
        "ast": {
          "absolutePath": "@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol",
          "exportedSymbols": {
            "MinterRole": [
              125
            ],
            "Ownable": [
              206
            ]
          },
          "id": 126,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 24,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:1"
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/access/Ownable.sol",
              "file": "./Ownable.sol",
              "id": 26,
              "nodeType": "ImportDirective",
              "scope": 126,
              "sourceUnit": 207,
              "src": "66:38:1",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 25,
                    "name": "Ownable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:7:1",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 28,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 206,
                    "src": "226:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$206",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 29,
                  "nodeType": "InheritanceSpecifier",
                  "src": "226:7:1"
                }
              ],
              "contractDependencies": [
                22,
                206,
                239
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 27,
                "nodeType": "StructuredDocumentation",
                "src": "106:96:1",
                "text": " Contract which allows derived contracts access control over token minting operations."
              },
              "fullyImplemented": true,
              "id": 125,
              "linearizedBaseContracts": [
                125,
                206,
                22,
                239
              ],
              "name": "MinterRole",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "id": 33,
                  "name": "MinterAdded",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 32,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 33,
                        "src": "258:23:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "258:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "257:25:1"
                  },
                  "src": "240:43:1"
                },
                {
                  "anonymous": false,
                  "id": 37,
                  "name": "MinterRemoved",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 36,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 35,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 37,
                        "src": "308:23:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 34,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "308:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "307:25:1"
                  },
                  "src": "288:45:1"
                },
                {
                  "constant": false,
                  "functionSelector": "aa271e1a",
                  "id": 41,
                  "mutability": "mutable",
                  "name": "isMinter",
                  "nodeType": "VariableDeclaration",
                  "scope": 125,
                  "src": "339:40:1",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "typeName": {
                    "id": 40,
                    "keyType": {
                      "id": 38,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "347:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "339:24:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                      "typeString": "mapping(address => bool)"
                    },
                    "valueType": {
                      "id": 39,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "358:4:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 54,
                    "nodeType": "Block",
                    "src": "466:35:1",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 51,
                              "name": "owner_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44,
                              "src": "487:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 50,
                            "name": "_addMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 124,
                            "src": "476:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 52,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "476:18:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 53,
                        "nodeType": "ExpressionStatement",
                        "src": "476:18:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 42,
                    "nodeType": "StructuredDocumentation",
                    "src": "386:31:1",
                    "text": " Constructor."
                  },
                  "id": 55,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 47,
                          "name": "owner_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 44,
                          "src": "458:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 48,
                      "modifierName": {
                        "id": 46,
                        "name": "Ownable",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 206,
                        "src": "450:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Ownable_$206_$",
                          "typeString": "type(contract Ownable)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "450:15:1"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 45,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44,
                        "mutability": "mutable",
                        "name": "owner_",
                        "nodeType": "VariableDeclaration",
                        "scope": 55,
                        "src": "434:14:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "434:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "433:16:1"
                  },
                  "returnParameters": {
                    "id": 49,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "466:0:1"
                  },
                  "scope": 125,
                  "src": "422:79:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 70,
                    "nodeType": "Block",
                    "src": "737:77:1",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 62,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 229,
                                "src": "765:10:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 63,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "765:12:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 61,
                            "name": "_requireOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 205,
                            "src": "747:17:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 64,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "747:31:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 65,
                        "nodeType": "ExpressionStatement",
                        "src": "747:31:1"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 67,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 58,
                              "src": "799:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 66,
                            "name": "_addMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 124,
                            "src": "788:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 68,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "788:19:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 69,
                        "nodeType": "ExpressionStatement",
                        "src": "788:19:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 56,
                    "nodeType": "StructuredDocumentation",
                    "src": "507:182:1",
                    "text": " Grants the minter role to a non-minter.\n @dev reverts if the sender is not the contract owner.\n @param account The account to grant the minter role to."
                  },
                  "functionSelector": "983b2d56",
                  "id": 71,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "addMinter",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 59,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 58,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 71,
                        "src": "713:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 57,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "713:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "712:17:1"
                  },
                  "returnParameters": {
                    "id": 60,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "737:0:1"
                  },
                  "scope": 125,
                  "src": "694:120:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 94,
                    "nodeType": "Block",
                    "src": "962:152:1",
                    "statements": [
                      {
                        "assignments": [
                          76
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 76,
                            "mutability": "mutable",
                            "name": "account",
                            "nodeType": "VariableDeclaration",
                            "scope": 94,
                            "src": "972:15:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 75,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "972:7:1",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 79,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 77,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 229,
                            "src": "990:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 78,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "990:12:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "972:30:1"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 81,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 76,
                              "src": "1027:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 80,
                            "name": "_requireMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "1012:14:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 82,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1012:23:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 83,
                        "nodeType": "ExpressionStatement",
                        "src": "1012:23:1"
                      },
                      {
                        "expression": {
                          "id": 88,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 84,
                              "name": "isMinter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41,
                              "src": "1045:8:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 86,
                            "indexExpression": {
                              "id": 85,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 76,
                              "src": "1054:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1045:17:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "66616c7365",
                            "id": 87,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1065:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "1045:25:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 89,
                        "nodeType": "ExpressionStatement",
                        "src": "1045:25:1"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 91,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 76,
                              "src": "1099:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 90,
                            "name": "MinterRemoved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37,
                            "src": "1085:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 92,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1085:22:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 93,
                        "nodeType": "EmitStatement",
                        "src": "1080:27:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 72,
                    "nodeType": "StructuredDocumentation",
                    "src": "820:104:1",
                    "text": " Renounces the granted minter role.\n @dev reverts if the sender is not a minter."
                  },
                  "functionSelector": "98650275",
                  "id": 95,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "renounceMinter",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 73,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "952:2:1"
                  },
                  "returnParameters": {
                    "id": 74,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "962:0:1"
                  },
                  "scope": 125,
                  "src": "929:185:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 107,
                    "nodeType": "Block",
                    "src": "1175:71:1",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 101,
                                "name": "isMinter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 41,
                                "src": "1193:8:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                  "typeString": "mapping(address => bool)"
                                }
                              },
                              "id": 103,
                              "indexExpression": {
                                "id": 102,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 97,
                                "src": "1202:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1193:17:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4d696e746572526f6c653a206e6f742061204d696e746572",
                              "id": 104,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1212:26:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ed88271ad3c83451da7264dacc0a9aabca262c2268fefa5c8744606804e8c82b",
                                "typeString": "literal_string \"MinterRole: not a Minter\""
                              },
                              "value": "MinterRole: not a Minter"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ed88271ad3c83451da7264dacc0a9aabca262c2268fefa5c8744606804e8c82b",
                                "typeString": "literal_string \"MinterRole: not a Minter\""
                              }
                            ],
                            "id": 100,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1185:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 105,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1185:54:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 106,
                        "nodeType": "ExpressionStatement",
                        "src": "1185:54:1"
                      }
                    ]
                  },
                  "id": 108,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_requireMinter",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 98,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 97,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 108,
                        "src": "1144:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 96,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1144:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1143:17:1"
                  },
                  "returnParameters": {
                    "id": 99,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1175:0:1"
                  },
                  "scope": 125,
                  "src": "1120:126:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 123,
                    "nodeType": "Block",
                    "src": "1298:76:1",
                    "statements": [
                      {
                        "expression": {
                          "id": 117,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 113,
                              "name": "isMinter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41,
                              "src": "1308:8:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 115,
                            "indexExpression": {
                              "id": 114,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 110,
                              "src": "1317:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1308:17:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 116,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1328:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "1308:24:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 118,
                        "nodeType": "ExpressionStatement",
                        "src": "1308:24:1"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 120,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 110,
                              "src": "1359:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 119,
                            "name": "MinterAdded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33,
                            "src": "1347:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 121,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1347:20:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 122,
                        "nodeType": "EmitStatement",
                        "src": "1342:25:1"
                      }
                    ]
                  },
                  "id": 124,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_addMinter",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 111,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 110,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 124,
                        "src": "1272:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 109,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1272:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1271:17:1"
                  },
                  "returnParameters": {
                    "id": 112,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1298:0:1"
                  },
                  "scope": 125,
                  "src": "1252:122:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 126,
              "src": "203:1173:1"
            }
          ],
          "src": "33:1344:1"
        },
        "id": 1
      },
      "@animoca/ethereum-contracts-core/contracts/access/Ownable.sol": {
        "ast": {
          "absolutePath": "@animoca/ethereum-contracts-core/contracts/access/Ownable.sol",
          "exportedSymbols": {
            "IERC173": [
              22
            ],
            "ManagedIdentity": [
              239
            ],
            "Ownable": [
              206
            ]
          },
          "id": 207,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 127,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:2"
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "file": "../metatx/ManagedIdentity.sol",
              "id": 129,
              "nodeType": "ImportDirective",
              "scope": 207,
              "sourceUnit": 240,
              "src": "66:62:2",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 128,
                    "name": "ManagedIdentity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:15:2",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/access/IERC173.sol",
              "file": "./IERC173.sol",
              "id": 131,
              "nodeType": "ImportDirective",
              "scope": 207,
              "sourceUnit": 23,
              "src": "129:38:2",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 130,
                    "name": "IERC173",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "137:7:2",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 133,
                    "name": "ManagedIdentity",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 239,
                    "src": "693:15:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ManagedIdentity_$239",
                      "typeString": "contract ManagedIdentity"
                    }
                  },
                  "id": 134,
                  "nodeType": "InheritanceSpecifier",
                  "src": "693:15:2"
                },
                {
                  "baseName": {
                    "id": 135,
                    "name": "IERC173",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22,
                    "src": "710:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC173_$22",
                      "typeString": "contract IERC173"
                    }
                  },
                  "id": 136,
                  "nodeType": "InheritanceSpecifier",
                  "src": "710:7:2"
                }
              ],
              "contractDependencies": [
                22,
                239
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 132,
                "nodeType": "StructuredDocumentation",
                "src": "169:494:2",
                "text": " @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."
              },
              "fullyImplemented": true,
              "id": 206,
              "linearizedBaseContracts": [
                206,
                22,
                239
              ],
              "name": "Ownable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 138,
                  "mutability": "mutable",
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 206,
                  "src": "724:23:2",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 137,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "724:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 156,
                    "nodeType": "Block",
                    "src": "950:87:2",
                    "statements": [
                      {
                        "expression": {
                          "id": 146,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 144,
                            "name": "_owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 138,
                            "src": "960:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 145,
                            "name": "owner_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 141,
                            "src": "969:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "960:15:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 147,
                        "nodeType": "ExpressionStatement",
                        "src": "960:15:2"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 151,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1019:1:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 150,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1011:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 149,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1011:7:2",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 152,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1011:10:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 153,
                              "name": "owner_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 141,
                              "src": "1023:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 148,
                            "name": "OwnershipTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9,
                            "src": "990:20:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 154,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "990:40:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 155,
                        "nodeType": "EmitStatement",
                        "src": "985:45:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 139,
                    "nodeType": "StructuredDocumentation",
                    "src": "754:163:2",
                    "text": " Initializes the contract, setting the deployer as the initial owner.\n @dev Emits an {IERC173-OwnershipTransferred(address,address)} event."
                  },
                  "id": 157,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 142,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 141,
                        "mutability": "mutable",
                        "name": "owner_",
                        "nodeType": "VariableDeclaration",
                        "scope": 157,
                        "src": "934:14:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 140,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "934:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "933:16:2"
                  },
                  "returnParameters": {
                    "id": 143,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "950:0:2"
                  },
                  "scope": 206,
                  "src": "922:115:2",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    15
                  ],
                  "body": {
                    "id": 166,
                    "nodeType": "Block",
                    "src": "1178:30:2",
                    "statements": [
                      {
                        "expression": {
                          "id": 164,
                          "name": "_owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 138,
                          "src": "1195:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 163,
                        "id": 165,
                        "nodeType": "Return",
                        "src": "1188:13:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 158,
                    "nodeType": "StructuredDocumentation",
                    "src": "1043:66:2",
                    "text": " Gets the address of the current contract owner."
                  },
                  "functionSelector": "8da5cb5b",
                  "id": 167,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "owner",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 160,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1151:8:2"
                  },
                  "parameters": {
                    "id": 159,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1128:2:2"
                  },
                  "returnParameters": {
                    "id": 163,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 162,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 167,
                        "src": "1169:7:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 161,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1169:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1168:9:2"
                  },
                  "scope": 206,
                  "src": "1114:94:2",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    21
                  ],
                  "body": {
                    "id": 188,
                    "nodeType": "Block",
                    "src": "1517:128:2",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 175,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 229,
                                "src": "1545:10:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 176,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1545:12:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 174,
                            "name": "_requireOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 205,
                            "src": "1527:17:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 177,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1527:31:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 178,
                        "nodeType": "ExpressionStatement",
                        "src": "1527:31:2"
                      },
                      {
                        "expression": {
                          "id": 181,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 179,
                            "name": "_owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 138,
                            "src": "1568:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 180,
                            "name": "newOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 170,
                            "src": "1577:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1568:17:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 182,
                        "nodeType": "ExpressionStatement",
                        "src": "1568:17:2"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 184,
                              "name": "_owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 138,
                              "src": "1621:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 185,
                              "name": "newOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 170,
                              "src": "1629:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 183,
                            "name": "OwnershipTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9,
                            "src": "1600:20:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 186,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1600:38:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 187,
                        "nodeType": "EmitStatement",
                        "src": "1595:43:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 168,
                    "nodeType": "StructuredDocumentation",
                    "src": "1214:229:2",
                    "text": " See {IERC173-transferOwnership(address)}\n @dev Reverts if the sender is not the current contract owner.\n @param newOwner the address of the new owner. Use the zero address to renounce the ownership."
                  },
                  "functionSelector": "f2fde38b",
                  "id": 189,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferOwnership",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 172,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1508:8:2"
                  },
                  "parameters": {
                    "id": 171,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 170,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 189,
                        "src": "1475:16:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 169,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1475:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1474:18:2"
                  },
                  "returnParameters": {
                    "id": 173,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1517:0:2"
                  },
                  "scope": 206,
                  "src": "1448:197:2",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 204,
                    "nodeType": "Block",
                    "src": "1831:75:2",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 200,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 196,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 192,
                                "src": "1849:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 197,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "1860:4:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_Ownable_$206",
                                      "typeString": "contract Ownable"
                                    }
                                  },
                                  "id": 198,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "owner",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 167,
                                  "src": "1860:10:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                    "typeString": "function () view external returns (address)"
                                  }
                                },
                                "id": 199,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1860:12:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1849:23:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4f776e61626c653a206e6f7420746865206f776e6572",
                              "id": 201,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1874:24:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3f66c2bea32eba0f3d049dc65c25083896451ab6baac1da5f5b2c90c9678a0e9",
                                "typeString": "literal_string \"Ownable: not the owner\""
                              },
                              "value": "Ownable: not the owner"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3f66c2bea32eba0f3d049dc65c25083896451ab6baac1da5f5b2c90c9678a0e9",
                                "typeString": "literal_string \"Ownable: not the owner\""
                              }
                            ],
                            "id": 195,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1841:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 202,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1841:58:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 203,
                        "nodeType": "ExpressionStatement",
                        "src": "1841:58:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 190,
                    "nodeType": "StructuredDocumentation",
                    "src": "1651:114:2",
                    "text": " @dev Reverts if `account` is not the contract owner.\n @param account the account to test."
                  },
                  "id": 205,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_requireOwnership",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 193,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 192,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 205,
                        "src": "1797:15:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 191,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1797:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1796:17:2"
                  },
                  "returnParameters": {
                    "id": 194,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1831:0:2"
                  },
                  "scope": 206,
                  "src": "1770:136:2",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 207,
              "src": "664:1244:2"
            }
          ],
          "src": "33:1876:2"
        },
        "id": 2
      },
      "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol": {
        "ast": {
          "absolutePath": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
          "exportedSymbols": {
            "IERC165": [
              218
            ]
          },
          "id": 219,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 208,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:3"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 209,
                "nodeType": "StructuredDocumentation",
                "src": "66:110:3",
                "text": " @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165."
              },
              "fullyImplemented": false,
              "id": 218,
              "linearizedBaseContracts": [
                218
              ],
              "name": "IERC165",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 210,
                    "nodeType": "StructuredDocumentation",
                    "src": "201:340:3",
                    "text": " @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 217,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 213,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 212,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nodeType": "VariableDeclaration",
                        "scope": 217,
                        "src": "573:18:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 211,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "573:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "572:20:3"
                  },
                  "returnParameters": {
                    "id": 216,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 215,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 217,
                        "src": "616:4:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 214,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "616:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "615:6:3"
                  },
                  "scope": 218,
                  "src": "546:76:3",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 219,
              "src": "177:447:3"
            }
          ],
          "src": "33:592:3"
        },
        "id": 3
      },
      "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol": {
        "ast": {
          "absolutePath": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
          "exportedSymbols": {
            "ManagedIdentity": [
              239
            ]
          },
          "id": 240,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 220,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:4"
            },
            {
              "abstract": true,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 239,
              "linearizedBaseContracts": [
                239
              ],
              "name": "ManagedIdentity",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 228,
                    "nodeType": "Block",
                    "src": "425:34:4",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "id": 225,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "442:3:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 226,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "442:10:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "functionReturnParameters": 224,
                        "id": 227,
                        "nodeType": "Return",
                        "src": "435:17:4"
                      }
                    ]
                  },
                  "id": 229,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgSender",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 221,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "374:2:4"
                  },
                  "returnParameters": {
                    "id": 224,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 223,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 229,
                        "src": "408:15:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 222,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "408:15:4",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "407:17:4"
                  },
                  "scope": 239,
                  "src": "355:104:4",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 237,
                    "nodeType": "Block",
                    "src": "530:32:4",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "id": 234,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "547:3:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 235,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "data",
                          "nodeType": "MemberAccess",
                          "src": "547:8:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "functionReturnParameters": 233,
                        "id": 236,
                        "nodeType": "Return",
                        "src": "540:15:4"
                      }
                    ]
                  },
                  "id": 238,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgData",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 230,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "482:2:4"
                  },
                  "returnParameters": {
                    "id": 233,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 232,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 238,
                        "src": "516:12:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 231,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "516:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "515:14:4"
                  },
                  "scope": 239,
                  "src": "465:97:4",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 240,
              "src": "315:249:4"
            }
          ],
          "src": "33:532:4"
        },
        "id": 4
      },
      "@animoca/ethereum-contracts-core/contracts/utils/ERC20Wrapper.sol": {
        "ast": {
          "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/ERC20Wrapper.sol",
          "exportedSymbols": {
            "AddressIsContract": [
              589
            ],
            "ERC20Wrapper": [
              380
            ],
            "IWrappedERC20": [
              410
            ]
          },
          "id": 411,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 241,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:5"
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/types/AddressIsContract.sol",
              "file": "./types/AddressIsContract.sol",
              "id": 243,
              "nodeType": "ImportDirective",
              "scope": 411,
              "sourceUnit": 590,
              "src": "66:64:5",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 242,
                    "name": "AddressIsContract",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:17:5",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 244,
                "nodeType": "StructuredDocumentation",
                "src": "132:214:5",
                "text": " @title ERC20Wrapper\n Wraps ERC20 functions to support non-standard implementations which do not return a bool value.\n Calls to the wrapped functions revert only if they throw or if they return false."
              },
              "fullyImplemented": true,
              "id": 380,
              "linearizedBaseContracts": [
                380
              ],
              "name": "ERC20Wrapper",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 247,
                  "libraryName": {
                    "id": 245,
                    "name": "AddressIsContract",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 589,
                    "src": "380:17:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AddressIsContract_$589",
                      "typeString": "library AddressIsContract"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "374:36:5",
                  "typeName": {
                    "id": 246,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "402:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                },
                {
                  "body": {
                    "id": 268,
                    "nodeType": "Block",
                    "src": "528:111:5",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 257,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 249,
                              "src": "566:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWrappedERC20_$410",
                                "typeString": "contract IWrappedERC20"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "expression": {
                                      "id": 260,
                                      "name": "token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 249,
                                      "src": "596:5:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IWrappedERC20_$410",
                                        "typeString": "contract IWrappedERC20"
                                      }
                                    },
                                    "id": 261,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "transfer",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 389,
                                    "src": "596:14:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                      "typeString": "function (address,uint256) external returns (bool)"
                                    }
                                  },
                                  "id": 262,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "596:23:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "id": 263,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 251,
                                  "src": "621:2:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 264,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 253,
                                  "src": "625:5:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 258,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "573:3:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 259,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "573:22:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 265,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "573:58:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IWrappedERC20_$410",
                                "typeString": "contract IWrappedERC20"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 256,
                            "name": "_callWithOptionalReturnData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 379,
                            "src": "538:27:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IWrappedERC20_$410_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (contract IWrappedERC20,bytes memory)"
                            }
                          },
                          "id": 266,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "538:94:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 267,
                        "nodeType": "ExpressionStatement",
                        "src": "538:94:5"
                      }
                    ]
                  },
                  "id": 269,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "wrappedTransfer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 254,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 249,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 269,
                        "src": "450:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IWrappedERC20_$410",
                          "typeString": "contract IWrappedERC20"
                        },
                        "typeName": {
                          "id": 248,
                          "name": "IWrappedERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 410,
                          "src": "450:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IWrappedERC20_$410",
                            "typeString": "contract IWrappedERC20"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 251,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 269,
                        "src": "479:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 250,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "479:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 253,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 269,
                        "src": "499:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 252,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "499:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "440:78:5"
                  },
                  "returnParameters": {
                    "id": 255,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "528:0:5"
                  },
                  "scope": 380,
                  "src": "416:223:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 293,
                    "nodeType": "Block",
                    "src": "783:121:5",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 281,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 271,
                              "src": "821:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWrappedERC20_$410",
                                "typeString": "contract IWrappedERC20"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "expression": {
                                      "id": 284,
                                      "name": "token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 271,
                                      "src": "851:5:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IWrappedERC20_$410",
                                        "typeString": "contract IWrappedERC20"
                                      }
                                    },
                                    "id": 285,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "transferFrom",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 400,
                                    "src": "851:18:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                      "typeString": "function (address,address,uint256) external returns (bool)"
                                    }
                                  },
                                  "id": 286,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "851:27:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "id": 287,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 273,
                                  "src": "880:4:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 288,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 275,
                                  "src": "886:2:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 289,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 277,
                                  "src": "890:5:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 282,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "828:3:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 283,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "828:22:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 290,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "828:68:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IWrappedERC20_$410",
                                "typeString": "contract IWrappedERC20"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 280,
                            "name": "_callWithOptionalReturnData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 379,
                            "src": "793:27:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IWrappedERC20_$410_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (contract IWrappedERC20,bytes memory)"
                            }
                          },
                          "id": 291,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "793:104:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 292,
                        "nodeType": "ExpressionStatement",
                        "src": "793:104:5"
                      }
                    ]
                  },
                  "id": 294,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "wrappedTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 278,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 271,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 294,
                        "src": "683:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IWrappedERC20_$410",
                          "typeString": "contract IWrappedERC20"
                        },
                        "typeName": {
                          "id": 270,
                          "name": "IWrappedERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 410,
                          "src": "683:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IWrappedERC20_$410",
                            "typeString": "contract IWrappedERC20"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 273,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 294,
                        "src": "712:12:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 272,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "712:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 275,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 294,
                        "src": "734:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 274,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "734:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 277,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 294,
                        "src": "754:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 276,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "754:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "673:100:5"
                  },
                  "returnParameters": {
                    "id": 279,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "783:0:5"
                  },
                  "scope": 380,
                  "src": "645:259:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 315,
                    "nodeType": "Block",
                    "src": "1026:115:5",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 304,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 296,
                              "src": "1064:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWrappedERC20_$410",
                                "typeString": "contract IWrappedERC20"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "expression": {
                                      "id": 307,
                                      "name": "token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 296,
                                      "src": "1094:5:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IWrappedERC20_$410",
                                        "typeString": "contract IWrappedERC20"
                                      }
                                    },
                                    "id": 308,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "approve",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 409,
                                    "src": "1094:13:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                      "typeString": "function (address,uint256) external returns (bool)"
                                    }
                                  },
                                  "id": 309,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "1094:22:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "id": 310,
                                  "name": "spender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 298,
                                  "src": "1118:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 311,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 300,
                                  "src": "1127:5:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 305,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "1071:3:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 306,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "1071:22:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 312,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1071:62:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IWrappedERC20_$410",
                                "typeString": "contract IWrappedERC20"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 303,
                            "name": "_callWithOptionalReturnData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 379,
                            "src": "1036:27:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IWrappedERC20_$410_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (contract IWrappedERC20,bytes memory)"
                            }
                          },
                          "id": 313,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1036:98:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 314,
                        "nodeType": "ExpressionStatement",
                        "src": "1036:98:5"
                      }
                    ]
                  },
                  "id": 316,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "wrappedApprove",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 301,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 296,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 316,
                        "src": "943:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IWrappedERC20_$410",
                          "typeString": "contract IWrappedERC20"
                        },
                        "typeName": {
                          "id": 295,
                          "name": "IWrappedERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 410,
                          "src": "943:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IWrappedERC20_$410",
                            "typeString": "contract IWrappedERC20"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 298,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 316,
                        "src": "972:15:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 297,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "972:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 300,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 316,
                        "src": "997:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 299,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "997:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "933:83:5"
                  },
                  "returnParameters": {
                    "id": 302,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1026:0:5"
                  },
                  "scope": 380,
                  "src": "910:231:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 378,
                    "nodeType": "Block",
                    "src": "1237:780:5",
                    "statements": [
                      {
                        "assignments": [
                          324
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 324,
                            "mutability": "mutable",
                            "name": "target",
                            "nodeType": "VariableDeclaration",
                            "scope": 378,
                            "src": "1247:14:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 323,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1247:7:5",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 329,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 327,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 318,
                              "src": "1272:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWrappedERC20_$410",
                                "typeString": "contract IWrappedERC20"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IWrappedERC20_$410",
                                "typeString": "contract IWrappedERC20"
                              }
                            ],
                            "id": 326,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1264:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 325,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1264:7:5",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 328,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1264:14:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1247:31:5"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 331,
                                  "name": "target",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 324,
                                  "src": "1296:6:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 332,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 588,
                                "src": "1296:17:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 333,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1296:19:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433230577261707065723a206e6f6e2d636f6e7472616374",
                              "id": 334,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1317:28:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d46911ea9505b9a71e075140669484d9822793e573c3bc4caaf050c064e8e475",
                                "typeString": "literal_string \"ERC20Wrapper: non-contract\""
                              },
                              "value": "ERC20Wrapper: non-contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d46911ea9505b9a71e075140669484d9822793e573c3bc4caaf050c064e8e475",
                                "typeString": "literal_string \"ERC20Wrapper: non-contract\""
                              }
                            ],
                            "id": 330,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1288:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 335,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1288:58:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 336,
                        "nodeType": "ExpressionStatement",
                        "src": "1288:58:5"
                      },
                      {
                        "assignments": [
                          338,
                          340
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 338,
                            "mutability": "mutable",
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "scope": 378,
                            "src": "1417:12:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 337,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "1417:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 340,
                            "mutability": "mutable",
                            "name": "data",
                            "nodeType": "VariableDeclaration",
                            "scope": 378,
                            "src": "1431:17:5",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 339,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1431:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 345,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 343,
                              "name": "callData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 320,
                              "src": "1464:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 341,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 324,
                              "src": "1452:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 342,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "call",
                            "nodeType": "MemberAccess",
                            "src": "1452:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 344,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1452:21:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1416:57:5"
                      },
                      {
                        "condition": {
                          "id": 346,
                          "name": "success",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 338,
                          "src": "1487:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 376,
                          "nodeType": "Block",
                          "src": "1648:363:5",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 368,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 365,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 340,
                                    "src": "1720:4:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 366,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "1720:11:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 367,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1735:1:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "1720:16:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 374,
                              "nodeType": "IfStatement",
                              "src": "1716:95:5",
                              "trueBody": {
                                "id": 373,
                                "nodeType": "Block",
                                "src": "1738:73:5",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "hexValue": "4552433230577261707065723a206f7065726174696f6e206661696c6564",
                                          "id": 370,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1763:32:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_a2693bc24863a03d4a9bc9bd3a39eb0b1e30e06ced1710d854be911a8ed7db9b",
                                            "typeString": "literal_string \"ERC20Wrapper: operation failed\""
                                          },
                                          "value": "ERC20Wrapper: operation failed"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_stringliteral_a2693bc24863a03d4a9bc9bd3a39eb0b1e30e06ced1710d854be911a8ed7db9b",
                                            "typeString": "literal_string \"ERC20Wrapper: operation failed\""
                                          }
                                        ],
                                        "id": 369,
                                        "name": "revert",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -19,
                                          -19
                                        ],
                                        "referencedDeclaration": -19,
                                        "src": "1756:6:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (string memory) pure"
                                        }
                                      },
                                      "id": 371,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1756:40:5",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 372,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1756:40:5"
                                  }
                                ]
                              }
                            },
                            {
                              "AST": {
                                "nodeType": "YulBlock",
                                "src": "1902:99:5",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1920:23:5",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "data",
                                          "nodeType": "YulIdentifier",
                                          "src": "1938:4:5"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "1932:5:5"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1932:11:5"
                                    },
                                    "variables": [
                                      {
                                        "name": "size",
                                        "nodeType": "YulTypedName",
                                        "src": "1924:4:5",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1971:2:5",
                                              "type": "",
                                              "value": "32"
                                            },
                                            {
                                              "name": "data",
                                              "nodeType": "YulIdentifier",
                                              "src": "1975:4:5"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "1967:3:5"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1967:13:5"
                                        },
                                        {
                                          "name": "size",
                                          "nodeType": "YulIdentifier",
                                          "src": "1982:4:5"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1960:6:5"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1960:27:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1960:27:5"
                                  }
                                ]
                              },
                              "evmVersion": "istanbul",
                              "externalReferences": [
                                {
                                  "declaration": 340,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "1938:4:5",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 340,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "1975:4:5",
                                  "valueSize": 1
                                }
                              ],
                              "id": 375,
                              "nodeType": "InlineAssembly",
                              "src": "1893:108:5"
                            }
                          ]
                        },
                        "id": 377,
                        "nodeType": "IfStatement",
                        "src": "1483:528:5",
                        "trueBody": {
                          "id": 364,
                          "nodeType": "Block",
                          "src": "1496:146:5",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 350,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 347,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 340,
                                    "src": "1514:4:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 348,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "1514:11:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 349,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1529:1:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "1514:16:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 363,
                              "nodeType": "IfStatement",
                              "src": "1510:122:5",
                              "trueBody": {
                                "id": 362,
                                "nodeType": "Block",
                                "src": "1532:100:5",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "id": 354,
                                              "name": "data",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 340,
                                              "src": "1569:4:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            },
                                            {
                                              "components": [
                                                {
                                                  "id": 356,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "nodeType": "ElementaryTypeNameExpression",
                                                  "src": "1576:4:5",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_bool_$",
                                                    "typeString": "type(bool)"
                                                  },
                                                  "typeName": {
                                                    "id": 355,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1576:4:5",
                                                    "typeDescriptions": {}
                                                  }
                                                }
                                              ],
                                              "id": 357,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "TupleExpression",
                                              "src": "1575:6:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_bool_$",
                                                "typeString": "type(bool)"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              },
                                              {
                                                "typeIdentifier": "t_type$_t_bool_$",
                                                "typeString": "type(bool)"
                                              }
                                            ],
                                            "expression": {
                                              "id": 352,
                                              "name": "abi",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -1,
                                              "src": "1558:3:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_abi",
                                                "typeString": "abi"
                                              }
                                            },
                                            "id": 353,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "decode",
                                            "nodeType": "MemberAccess",
                                            "src": "1558:10:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                              "typeString": "function () pure"
                                            }
                                          },
                                          "id": 358,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "1558:24:5",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "hexValue": "4552433230577261707065723a206f7065726174696f6e206661696c6564",
                                          "id": 359,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1584:32:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_a2693bc24863a03d4a9bc9bd3a39eb0b1e30e06ced1710d854be911a8ed7db9b",
                                            "typeString": "literal_string \"ERC20Wrapper: operation failed\""
                                          },
                                          "value": "ERC20Wrapper: operation failed"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_a2693bc24863a03d4a9bc9bd3a39eb0b1e30e06ced1710d854be911a8ed7db9b",
                                            "typeString": "literal_string \"ERC20Wrapper: operation failed\""
                                          }
                                        ],
                                        "id": 351,
                                        "name": "require",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -18,
                                          -18
                                        ],
                                        "referencedDeclaration": -18,
                                        "src": "1550:7:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (bool,string memory) pure"
                                        }
                                      },
                                      "id": 360,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1550:67:5",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 361,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1550:67:5"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 379,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_callWithOptionalReturnData",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 321,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 318,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 379,
                        "src": "1184:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IWrappedERC20_$410",
                          "typeString": "contract IWrappedERC20"
                        },
                        "typeName": {
                          "id": 317,
                          "name": "IWrappedERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 410,
                          "src": "1184:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IWrappedERC20_$410",
                            "typeString": "contract IWrappedERC20"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 320,
                        "mutability": "mutable",
                        "name": "callData",
                        "nodeType": "VariableDeclaration",
                        "scope": 379,
                        "src": "1205:21:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 319,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1205:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1183:44:5"
                  },
                  "returnParameters": {
                    "id": 322,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1237:0:5"
                  },
                  "scope": 380,
                  "src": "1147:870:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 411,
              "src": "347:1672:5"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 410,
              "linearizedBaseContracts": [
                410
              ],
              "name": "IWrappedERC20",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "a9059cbb",
                  "id": 389,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 385,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 382,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 389,
                        "src": "2069:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 381,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2069:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 384,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 389,
                        "src": "2081:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 383,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2081:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2068:27:5"
                  },
                  "returnParameters": {
                    "id": 388,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 387,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 389,
                        "src": "2114:4:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 386,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2114:4:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2113:6:5"
                  },
                  "scope": 410,
                  "src": "2051:69:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "23b872dd",
                  "id": 400,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 396,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 391,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 400,
                        "src": "2157:12:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 390,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2157:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 393,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 400,
                        "src": "2179:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 392,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2179:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 395,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 400,
                        "src": "2199:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 394,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2199:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2147:71:5"
                  },
                  "returnParameters": {
                    "id": 399,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 398,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 400,
                        "src": "2237:4:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 397,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2237:4:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2236:6:5"
                  },
                  "scope": 410,
                  "src": "2126:117:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "095ea7b3",
                  "id": 409,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 405,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 402,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 409,
                        "src": "2266:15:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 401,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2266:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 404,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 409,
                        "src": "2283:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 403,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2283:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2265:32:5"
                  },
                  "returnParameters": {
                    "id": 408,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 407,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 409,
                        "src": "2316:4:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 406,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2316:4:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2315:6:5"
                  },
                  "scope": 410,
                  "src": "2249:73:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 411,
              "src": "2021:303:5"
            }
          ],
          "src": "33:2292:5"
        },
        "id": 5
      },
      "@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol": {
        "ast": {
          "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol",
          "exportedSymbols": {
            "ERC20Wrapper": [
              380
            ],
            "IRecoverableERC721": [
              568
            ],
            "IWrappedERC20": [
              410
            ],
            "ManagedIdentity": [
              239
            ],
            "Ownable": [
              206
            ],
            "Recoverable": [
              557
            ]
          },
          "id": 569,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 412,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:6"
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "file": "../metatx/ManagedIdentity.sol",
              "id": 414,
              "nodeType": "ImportDirective",
              "scope": 569,
              "sourceUnit": 240,
              "src": "66:62:6",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 413,
                    "name": "ManagedIdentity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:15:6",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/access/Ownable.sol",
              "file": "../access/Ownable.sol",
              "id": 416,
              "nodeType": "ImportDirective",
              "scope": 569,
              "sourceUnit": 207,
              "src": "129:46:6",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 415,
                    "name": "Ownable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "137:7:6",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/ERC20Wrapper.sol",
              "file": "./ERC20Wrapper.sol",
              "id": 419,
              "nodeType": "ImportDirective",
              "scope": 569,
              "sourceUnit": 411,
              "src": "176:63:6",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 417,
                    "name": "IWrappedERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "184:13:6",
                    "typeDescriptions": {}
                  }
                },
                {
                  "foreign": {
                    "id": 418,
                    "name": "ERC20Wrapper",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "199:12:6",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 420,
                    "name": "ManagedIdentity",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 239,
                    "src": "274:15:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ManagedIdentity_$239",
                      "typeString": "contract ManagedIdentity"
                    }
                  },
                  "id": 421,
                  "nodeType": "InheritanceSpecifier",
                  "src": "274:15:6"
                },
                {
                  "baseName": {
                    "id": 422,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 206,
                    "src": "291:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$206",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 423,
                  "nodeType": "InheritanceSpecifier",
                  "src": "291:7:6"
                }
              ],
              "contractDependencies": [
                22,
                206,
                239
              ],
              "contractKind": "contract",
              "fullyImplemented": false,
              "id": 557,
              "linearizedBaseContracts": [
                557,
                206,
                22,
                239
              ],
              "name": "Recoverable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 426,
                  "libraryName": {
                    "id": 424,
                    "name": "ERC20Wrapper",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 380,
                    "src": "311:12:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC20Wrapper_$380",
                      "typeString": "library ERC20Wrapper"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "305:37:6",
                  "typeName": {
                    "id": 425,
                    "name": "IWrappedERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 410,
                    "src": "328:13:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IWrappedERC20_$410",
                      "typeString": "contract IWrappedERC20"
                    }
                  }
                },
                {
                  "body": {
                    "id": 488,
                    "nodeType": "Block",
                    "src": "1291:327:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 440,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 229,
                                "src": "1319:10:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 441,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1319:12:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 439,
                            "name": "_requireOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 205,
                            "src": "1301:17:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 442,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1301:31:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 443,
                        "nodeType": "ExpressionStatement",
                        "src": "1301:31:6"
                      },
                      {
                        "assignments": [
                          445
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 445,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 488,
                            "src": "1342:14:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 444,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1342:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 448,
                        "initialValue": {
                          "expression": {
                            "id": 446,
                            "name": "accounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 430,
                            "src": "1359:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          "id": 447,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "1359:15:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1342:32:6"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 458,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 453,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 450,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 445,
                                  "src": "1392:6:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "id": 451,
                                    "name": "tokens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 433,
                                    "src": "1402:6:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 452,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "1402:13:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1392:23:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 457,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 454,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 445,
                                  "src": "1419:6:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "id": 455,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 436,
                                    "src": "1429:7:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                      "typeString": "uint256[] calldata"
                                    }
                                  },
                                  "id": 456,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "1429:14:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1419:24:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1392:51:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5265636f763a20696e636f6e73697374656e7420617272617973",
                              "id": 459,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1445:28:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_94fd14b31909e8a28766c62160ac56dbfb2493c47530b1850f5c284b271cf34e",
                                "typeString": "literal_string \"Recov: inconsistent arrays\""
                              },
                              "value": "Recov: inconsistent arrays"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_94fd14b31909e8a28766c62160ac56dbfb2493c47530b1850f5c284b271cf34e",
                                "typeString": "literal_string \"Recov: inconsistent arrays\""
                              }
                            ],
                            "id": 449,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1384:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 460,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1384:90:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 461,
                        "nodeType": "ExpressionStatement",
                        "src": "1384:90:6"
                      },
                      {
                        "body": {
                          "id": 486,
                          "nodeType": "Block",
                          "src": "1522:90:6",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "baseExpression": {
                                      "id": 478,
                                      "name": "accounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 430,
                                      "src": "1577:8:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 480,
                                    "indexExpression": {
                                      "id": 479,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 463,
                                      "src": "1586:1:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1577:11:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "baseExpression": {
                                      "id": 481,
                                      "name": "amounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 436,
                                      "src": "1590:7:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 483,
                                    "indexExpression": {
                                      "id": 482,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 463,
                                      "src": "1598:1:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1590:10:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "baseExpression": {
                                          "id": 473,
                                          "name": "tokens",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 433,
                                          "src": "1550:6:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                            "typeString": "address[] calldata"
                                          }
                                        },
                                        "id": 475,
                                        "indexExpression": {
                                          "id": 474,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 463,
                                          "src": "1557:1:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "1550:9:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 472,
                                      "name": "IWrappedERC20",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 410,
                                      "src": "1536:13:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IWrappedERC20_$410_$",
                                        "typeString": "type(contract IWrappedERC20)"
                                      }
                                    },
                                    "id": 476,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1536:24:6",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IWrappedERC20_$410",
                                      "typeString": "contract IWrappedERC20"
                                    }
                                  },
                                  "id": 477,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "wrappedTransfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 269,
                                  "src": "1536:40:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IWrappedERC20_$410_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IWrappedERC20_$410_$",
                                    "typeString": "function (contract IWrappedERC20,address,uint256)"
                                  }
                                },
                                "id": 484,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1536:65:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 485,
                              "nodeType": "ExpressionStatement",
                              "src": "1536:65:6"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 468,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 466,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 463,
                            "src": "1504:1:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 467,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 445,
                            "src": "1509:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1504:11:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 487,
                        "initializationExpression": {
                          "assignments": [
                            463
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 463,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 487,
                              "src": "1489:9:6",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 462,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1489:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 465,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 464,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1501:1:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1489:13:6"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 470,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "1517:3:6",
                            "subExpression": {
                              "id": 469,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 463,
                              "src": "1519:1:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 471,
                          "nodeType": "ExpressionStatement",
                          "src": "1517:3:6"
                        },
                        "nodeType": "ForStatement",
                        "src": "1484:128:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 427,
                    "nodeType": "StructuredDocumentation",
                    "src": "348:784:6",
                    "text": " Extract ERC20 tokens which were accidentally sent to the contract to a list of accounts.\n Warning: this function should be overriden for contracts which are supposed to hold ERC20 tokens\n so that the extraction is limited to only amounts sent accidentally.\n @dev Reverts if the sender is not the contract owner.\n @dev Reverts if `accounts`, `tokens` and `amounts` do not have the same length.\n @dev Reverts if one of `tokens` is does not implement the ERC20 transfer function.\n @dev Reverts if one of the ERC20 transfers fail for any reason.\n @param accounts the list of accounts to transfer the tokens to.\n @param tokens the list of ERC20 token addresses.\n @param amounts the list of token amounts to transfer."
                  },
                  "functionSelector": "73c8a958",
                  "id": 489,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "recoverERC20s",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 437,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 430,
                        "mutability": "mutable",
                        "name": "accounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 489,
                        "src": "1169:27:6",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 428,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1169:7:6",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 429,
                          "nodeType": "ArrayTypeName",
                          "src": "1169:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 433,
                        "mutability": "mutable",
                        "name": "tokens",
                        "nodeType": "VariableDeclaration",
                        "scope": 489,
                        "src": "1206:25:6",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 431,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1206:7:6",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 432,
                          "nodeType": "ArrayTypeName",
                          "src": "1206:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 436,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 489,
                        "src": "1241:26:6",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 434,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1241:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 435,
                          "nodeType": "ArrayTypeName",
                          "src": "1241:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1159:114:6"
                  },
                  "returnParameters": {
                    "id": 438,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1291:0:6"
                  },
                  "scope": 557,
                  "src": "1137:481:6",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 555,
                    "nodeType": "Block",
                    "src": "2589:352:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 503,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 229,
                                "src": "2617:10:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 504,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2617:12:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 502,
                            "name": "_requireOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 205,
                            "src": "2599:17:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 505,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2599:31:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 506,
                        "nodeType": "ExpressionStatement",
                        "src": "2599:31:6"
                      },
                      {
                        "assignments": [
                          508
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 508,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 555,
                            "src": "2640:14:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 507,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2640:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 511,
                        "initialValue": {
                          "expression": {
                            "id": 509,
                            "name": "accounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 493,
                            "src": "2657:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          "id": 510,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "2657:15:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2640:32:6"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 521,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 516,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 513,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 508,
                                  "src": "2690:6:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "id": 514,
                                    "name": "contracts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 496,
                                    "src": "2700:9:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 515,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "2700:16:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2690:26:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 520,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 517,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 508,
                                  "src": "2720:6:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "id": 518,
                                    "name": "tokenIds",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 499,
                                    "src": "2730:8:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                      "typeString": "uint256[] calldata"
                                    }
                                  },
                                  "id": 519,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "2730:15:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2720:25:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2690:55:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5265636f763a20696e636f6e73697374656e7420617272617973",
                              "id": 522,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2747:28:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_94fd14b31909e8a28766c62160ac56dbfb2493c47530b1850f5c284b271cf34e",
                                "typeString": "literal_string \"Recov: inconsistent arrays\""
                              },
                              "value": "Recov: inconsistent arrays"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_94fd14b31909e8a28766c62160ac56dbfb2493c47530b1850f5c284b271cf34e",
                                "typeString": "literal_string \"Recov: inconsistent arrays\""
                              }
                            ],
                            "id": 512,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2682:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 523,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2682:94:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 524,
                        "nodeType": "ExpressionStatement",
                        "src": "2682:94:6"
                      },
                      {
                        "body": {
                          "id": 553,
                          "nodeType": "Block",
                          "src": "2824:111:6",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 543,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "2892:4:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_Recoverable_$557",
                                          "typeString": "contract Recoverable"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_Recoverable_$557",
                                          "typeString": "contract Recoverable"
                                        }
                                      ],
                                      "id": 542,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2884:7:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 541,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2884:7:6",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 544,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2884:13:6",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "baseExpression": {
                                      "id": 545,
                                      "name": "accounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 493,
                                      "src": "2899:8:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 547,
                                    "indexExpression": {
                                      "id": 546,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 526,
                                      "src": "2908:1:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2899:11:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "baseExpression": {
                                      "id": 548,
                                      "name": "tokenIds",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 499,
                                      "src": "2912:8:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 550,
                                    "indexExpression": {
                                      "id": 549,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 526,
                                      "src": "2921:1:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2912:11:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "baseExpression": {
                                          "id": 536,
                                          "name": "contracts",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 496,
                                          "src": "2857:9:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                            "typeString": "address[] calldata"
                                          }
                                        },
                                        "id": 538,
                                        "indexExpression": {
                                          "id": 537,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 526,
                                          "src": "2867:1:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "2857:12:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 535,
                                      "name": "IRecoverableERC721",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 568,
                                      "src": "2838:18:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IRecoverableERC721_$568_$",
                                        "typeString": "type(contract IRecoverableERC721)"
                                      }
                                    },
                                    "id": 539,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2838:32:6",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IRecoverableERC721_$568",
                                      "typeString": "contract IRecoverableERC721"
                                    }
                                  },
                                  "id": 540,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "transferFrom",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 567,
                                  "src": "2838:45:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256) external"
                                  }
                                },
                                "id": 551,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2838:86:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 552,
                              "nodeType": "ExpressionStatement",
                              "src": "2838:86:6"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 531,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 529,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 526,
                            "src": "2806:1:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 530,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 508,
                            "src": "2811:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2806:11:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 554,
                        "initializationExpression": {
                          "assignments": [
                            526
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 526,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 554,
                              "src": "2791:9:6",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 525,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2791:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 528,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 527,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2803:1:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2791:13:6"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 533,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "2819:3:6",
                            "subExpression": {
                              "id": 532,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 526,
                              "src": "2821:1:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 534,
                          "nodeType": "ExpressionStatement",
                          "src": "2819:3:6"
                        },
                        "nodeType": "ForStatement",
                        "src": "2786:149:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 490,
                    "nodeType": "StructuredDocumentation",
                    "src": "1624:801:6",
                    "text": " Extract ERC721 tokens which were accidentally sent to the contract to a list of accounts.\n Warning: this function should be overriden for contracts which are supposed to hold ERC721 tokens\n so that the extraction is limited to only tokens sent accidentally.\n @dev Reverts if the sender is not the contract owner.\n @dev Reverts if `accounts`, `contracts` and `amounts` do not have the same length.\n @dev Reverts if one of `contracts` is does not implement the ERC721 transferFrom function.\n @dev Reverts if one of the ERC721 transfers fail for any reason.\n @param accounts the list of accounts to transfer the tokens to.\n @param contracts the list of ERC721 contract addresses.\n @param tokenIds the list of token ids to transfer."
                  },
                  "functionSelector": "c3666c36",
                  "id": 556,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "recoverERC721s",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 500,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 493,
                        "mutability": "mutable",
                        "name": "accounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 556,
                        "src": "2463:27:6",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 491,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2463:7:6",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 492,
                          "nodeType": "ArrayTypeName",
                          "src": "2463:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 496,
                        "mutability": "mutable",
                        "name": "contracts",
                        "nodeType": "VariableDeclaration",
                        "scope": 556,
                        "src": "2500:28:6",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 494,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2500:7:6",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 495,
                          "nodeType": "ArrayTypeName",
                          "src": "2500:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 499,
                        "mutability": "mutable",
                        "name": "tokenIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 556,
                        "src": "2538:27:6",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 497,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2538:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 498,
                          "nodeType": "ArrayTypeName",
                          "src": "2538:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2453:118:6"
                  },
                  "returnParameters": {
                    "id": 501,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2589:0:6"
                  },
                  "scope": 557,
                  "src": "2430:511:6",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                }
              ],
              "scope": 569,
              "src": "241:2702:6"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 568,
              "linearizedBaseContracts": [
                568
              ],
              "name": "IRecoverableERC721",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 558,
                    "nodeType": "StructuredDocumentation",
                    "src": "2980:55:6",
                    "text": "See {IERC721-transferFrom(address,address,uint256)}"
                  },
                  "functionSelector": "23b872dd",
                  "id": 567,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 565,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 560,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 567,
                        "src": "3071:12:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 559,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3071:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 562,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 567,
                        "src": "3093:10:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 561,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3093:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 564,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 567,
                        "src": "3113:15:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 563,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3113:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3061:73:6"
                  },
                  "returnParameters": {
                    "id": 566,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3143:0:6"
                  },
                  "scope": 568,
                  "src": "3040:104:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 569,
              "src": "2945:201:6"
            }
          ],
          "src": "33:3114:6"
        },
        "id": 6
      },
      "@animoca/ethereum-contracts-core/contracts/utils/types/AddressIsContract.sol": {
        "ast": {
          "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/types/AddressIsContract.sol",
          "exportedSymbols": {
            "AddressIsContract": [
              589
            ]
          },
          "id": 590,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 570,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "206:31:7"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 571,
                "nodeType": "StructuredDocumentation",
                "src": "239:71:7",
                "text": " @dev Upgrades the address type to check if it is a contract."
              },
              "fullyImplemented": true,
              "id": 589,
              "linearizedBaseContracts": [
                589
              ],
              "name": "AddressIsContract",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 587,
                    "nodeType": "Block",
                    "src": "979:311:7",
                    "statements": [
                      {
                        "assignments": [
                          580
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 580,
                            "mutability": "mutable",
                            "name": "size",
                            "nodeType": "VariableDeclaration",
                            "scope": 587,
                            "src": "1176:12:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 579,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1176:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 581,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1176:12:7"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "1207:52:7",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1221:28:7",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "account",
                                    "nodeType": "YulIdentifier",
                                    "src": "1241:7:7"
                                  }
                                ],
                                "functionName": {
                                  "name": "extcodesize",
                                  "nodeType": "YulIdentifier",
                                  "src": "1229:11:7"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1229:20:7"
                              },
                              "variableNames": [
                                {
                                  "name": "size",
                                  "nodeType": "YulIdentifier",
                                  "src": "1221:4:7"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 574,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1241:7:7",
                            "valueSize": 1
                          },
                          {
                            "declaration": 580,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1221:4:7",
                            "valueSize": 1
                          }
                        ],
                        "id": 582,
                        "nodeType": "InlineAssembly",
                        "src": "1198:61:7"
                      },
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 585,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 583,
                            "name": "size",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 580,
                            "src": "1275:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 584,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1282:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1275:8:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 578,
                        "id": 586,
                        "nodeType": "Return",
                        "src": "1268:15:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 572,
                    "nodeType": "StructuredDocumentation",
                    "src": "343:565:7",
                    "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n  - an externally-owned account\n  - a contract in construction\n  - an address where a contract will be created\n  - an address where a contract lived, but was destroyed\n ===="
                  },
                  "id": 588,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isContract",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 575,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 574,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 588,
                        "src": "933:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 573,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "933:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "932:17:7"
                  },
                  "returnParameters": {
                    "id": 578,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 577,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 588,
                        "src": "973:4:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 576,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "973:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "972:6:7"
                  },
                  "scope": 589,
                  "src": "913:377:7",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 590,
              "src": "311:981:7"
            }
          ],
          "src": "206:1087:7"
        },
        "id": 7
      },
      "@animoca/ethereum-contracts-core/contracts/utils/types/UInt256ToDecimalString.sol": {
        "ast": {
          "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/types/UInt256ToDecimalString.sol",
          "exportedSymbols": {
            "UInt256ToDecimalString": [
              675
            ]
          },
          "id": 676,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 591,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "206:31:8"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "fullyImplemented": true,
              "id": 675,
              "linearizedBaseContracts": [
                675
              ],
              "name": "UInt256ToDecimalString",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 673,
                    "nodeType": "Block",
                    "src": "354:468:8",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 600,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 598,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 593,
                            "src": "368:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 599,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "377:1:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "368:10:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 604,
                        "nodeType": "IfStatement",
                        "src": "364:51:8",
                        "trueBody": {
                          "id": 603,
                          "nodeType": "Block",
                          "src": "380:35:8",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "30",
                                "id": 601,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "401:3:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                                  "typeString": "literal_string \"0\""
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 597,
                              "id": 602,
                              "nodeType": "Return",
                              "src": "394:10:8"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          606
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 606,
                            "mutability": "mutable",
                            "name": "temp",
                            "nodeType": "VariableDeclaration",
                            "scope": 673,
                            "src": "424:12:8",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 605,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "424:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 608,
                        "initialValue": {
                          "id": 607,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 593,
                          "src": "439:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "424:20:8"
                      },
                      {
                        "assignments": [
                          610
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 610,
                            "mutability": "mutable",
                            "name": "digits",
                            "nodeType": "VariableDeclaration",
                            "scope": 673,
                            "src": "454:14:8",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 609,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "454:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 611,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "454:14:8"
                      },
                      {
                        "body": {
                          "id": 622,
                          "nodeType": "Block",
                          "src": "496:57:8",
                          "statements": [
                            {
                              "expression": {
                                "id": 616,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "510:8:8",
                                "subExpression": {
                                  "id": 615,
                                  "name": "digits",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 610,
                                  "src": "510:6:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 617,
                              "nodeType": "ExpressionStatement",
                              "src": "510:8:8"
                            },
                            {
                              "expression": {
                                "id": 620,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 618,
                                  "name": "temp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 606,
                                  "src": "532:4:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "/=",
                                "rightHandSide": {
                                  "hexValue": "3130",
                                  "id": 619,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "540:2:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "src": "532:10:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 621,
                              "nodeType": "ExpressionStatement",
                              "src": "532:10:8"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 614,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 612,
                            "name": "temp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 606,
                            "src": "485:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 613,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "493:1:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "485:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 623,
                        "nodeType": "WhileStatement",
                        "src": "478:75:8"
                      },
                      {
                        "assignments": [
                          625
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 625,
                            "mutability": "mutable",
                            "name": "buffer",
                            "nodeType": "VariableDeclaration",
                            "scope": 673,
                            "src": "562:19:8",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 624,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "562:5:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 630,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 628,
                              "name": "digits",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 610,
                              "src": "594:6:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 627,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "584:9:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bytes memory)"
                            },
                            "typeName": {
                              "id": 626,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "588:5:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            }
                          },
                          "id": 629,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "584:17:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "562:39:8"
                      },
                      {
                        "assignments": [
                          632
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 632,
                            "mutability": "mutable",
                            "name": "index",
                            "nodeType": "VariableDeclaration",
                            "scope": 673,
                            "src": "611:13:8",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 631,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "611:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 636,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 635,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 633,
                            "name": "digits",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 610,
                            "src": "627:6:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 634,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "636:1:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "627:10:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "611:26:8"
                      },
                      {
                        "expression": {
                          "id": 639,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 637,
                            "name": "temp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 606,
                            "src": "647:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 638,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 593,
                            "src": "654:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "647:12:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 640,
                        "nodeType": "ExpressionStatement",
                        "src": "647:12:8"
                      },
                      {
                        "body": {
                          "id": 666,
                          "nodeType": "Block",
                          "src": "687:98:8",
                          "statements": [
                            {
                              "expression": {
                                "id": 660,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 644,
                                    "name": "buffer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 625,
                                    "src": "701:6:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 647,
                                  "indexExpression": {
                                    "id": 646,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "--",
                                    "prefix": false,
                                    "src": "708:7:8",
                                    "subExpression": {
                                      "id": 645,
                                      "name": "index",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 632,
                                      "src": "708:5:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "701:15:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 657,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "hexValue": "3438",
                                            "id": 652,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "732:2:8",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_48_by_1",
                                              "typeString": "int_const 48"
                                            },
                                            "value": "48"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "components": [
                                              {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 655,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "id": 653,
                                                  "name": "temp",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 606,
                                                  "src": "738:4:8",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "%",
                                                "rightExpression": {
                                                  "hexValue": "3130",
                                                  "id": 654,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "745:2:8",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_10_by_1",
                                                    "typeString": "int_const 10"
                                                  },
                                                  "value": "10"
                                                },
                                                "src": "738:9:8",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "id": 656,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "737:11:8",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "732:16:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 651,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "726:5:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint8_$",
                                          "typeString": "type(uint8)"
                                        },
                                        "typeName": {
                                          "id": 650,
                                          "name": "uint8",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "726:5:8",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 658,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "726:23:8",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    ],
                                    "id": 649,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "719:6:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes1_$",
                                      "typeString": "type(bytes1)"
                                    },
                                    "typeName": {
                                      "id": 648,
                                      "name": "bytes1",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "719:6:8",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 659,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "719:31:8",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "src": "701:49:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "id": 661,
                              "nodeType": "ExpressionStatement",
                              "src": "701:49:8"
                            },
                            {
                              "expression": {
                                "id": 664,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 662,
                                  "name": "temp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 606,
                                  "src": "764:4:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "/=",
                                "rightHandSide": {
                                  "hexValue": "3130",
                                  "id": 663,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "772:2:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "src": "764:10:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 665,
                              "nodeType": "ExpressionStatement",
                              "src": "764:10:8"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 643,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 641,
                            "name": "temp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 606,
                            "src": "676:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 642,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "684:1:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "676:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 667,
                        "nodeType": "WhileStatement",
                        "src": "669:116:8"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 670,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 625,
                              "src": "808:6:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 669,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "801:6:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                              "typeString": "type(string storage pointer)"
                            },
                            "typeName": {
                              "id": 668,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "801:6:8",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 671,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "801:14:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 597,
                        "id": 672,
                        "nodeType": "Return",
                        "src": "794:21:8"
                      }
                    ]
                  },
                  "id": 674,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toDecimalString",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 594,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 593,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 674,
                        "src": "301:13:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 592,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "301:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "300:15:8"
                  },
                  "returnParameters": {
                    "id": 597,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 596,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 674,
                        "src": "339:13:8",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 595,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "339:6:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "338:15:8"
                  },
                  "scope": 675,
                  "src": "276:546:8",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 676,
              "src": "239:585:8"
            }
          ],
          "src": "206:619:8"
        },
        "id": 8
      },
      "contracts/metadata/NFTBaseMetadataURI.sol": {
        "ast": {
          "absolutePath": "contracts/metadata/NFTBaseMetadataURI.sol",
          "exportedSymbols": {
            "ManagedIdentity": [
              239
            ],
            "NFTBaseMetadataURI": [
              735
            ],
            "Ownable": [
              206
            ],
            "UInt256ToDecimalString": [
              675
            ]
          },
          "id": 736,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 677,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:9"
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/types/UInt256ToDecimalString.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/utils/types/UInt256ToDecimalString.sol",
              "id": 679,
              "nodeType": "ImportDirective",
              "scope": 736,
              "sourceUnit": 676,
              "src": "66:121:9",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 678,
                    "name": "UInt256ToDecimalString",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:22:9",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "id": 681,
              "nodeType": "ImportDirective",
              "scope": 736,
              "sourceUnit": 240,
              "src": "188:102:9",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 680,
                    "name": "ManagedIdentity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "196:15:9",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/access/Ownable.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/access/Ownable.sol",
              "id": 683,
              "nodeType": "ImportDirective",
              "scope": 736,
              "sourceUnit": 207,
              "src": "291:86:9",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 682,
                    "name": "Ownable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "299:7:9",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 684,
                    "name": "ManagedIdentity",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 239,
                    "src": "419:15:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ManagedIdentity_$239",
                      "typeString": "contract ManagedIdentity"
                    }
                  },
                  "id": 685,
                  "nodeType": "InheritanceSpecifier",
                  "src": "419:15:9"
                },
                {
                  "baseName": {
                    "id": 686,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 206,
                    "src": "436:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$206",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 687,
                  "nodeType": "InheritanceSpecifier",
                  "src": "436:7:9"
                }
              ],
              "contractDependencies": [
                22,
                206,
                239
              ],
              "contractKind": "contract",
              "fullyImplemented": false,
              "id": 735,
              "linearizedBaseContracts": [
                735,
                206,
                22,
                239
              ],
              "name": "NFTBaseMetadataURI",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 690,
                  "libraryName": {
                    "id": 688,
                    "name": "UInt256ToDecimalString",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 675,
                    "src": "456:22:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_UInt256ToDecimalString_$675",
                      "typeString": "library UInt256ToDecimalString"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "450:41:9",
                  "typeName": {
                    "id": 689,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "483:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "anonymous": false,
                  "id": 694,
                  "name": "BaseMetadataURISet",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 693,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 692,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "baseMetadataURI",
                        "nodeType": "VariableDeclaration",
                        "scope": 694,
                        "src": "522:22:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 691,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "522:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "521:24:9"
                  },
                  "src": "497:49:9"
                },
                {
                  "constant": false,
                  "functionSelector": "5b2bd79e",
                  "id": 696,
                  "mutability": "mutable",
                  "name": "baseMetadataURI",
                  "nodeType": "VariableDeclaration",
                  "scope": 735,
                  "src": "552:29:9",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 695,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "552:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 714,
                    "nodeType": "Block",
                    "src": "659:143:9",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 702,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 229,
                                "src": "687:10:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 703,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "687:12:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 701,
                            "name": "_requireOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 205,
                            "src": "669:17:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 704,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "669:31:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 705,
                        "nodeType": "ExpressionStatement",
                        "src": "669:31:9"
                      },
                      {
                        "expression": {
                          "id": 708,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 706,
                            "name": "baseMetadataURI",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 696,
                            "src": "710:15:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 707,
                            "name": "baseMetadataURI_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 698,
                            "src": "728:16:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          },
                          "src": "710:34:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 709,
                        "nodeType": "ExpressionStatement",
                        "src": "710:34:9"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 711,
                              "name": "baseMetadataURI_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 698,
                              "src": "778:16:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            ],
                            "id": 710,
                            "name": "BaseMetadataURISet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 694,
                            "src": "759:18:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory)"
                            }
                          },
                          "id": 712,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "759:36:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 713,
                        "nodeType": "EmitStatement",
                        "src": "754:41:9"
                      }
                    ]
                  },
                  "functionSelector": "7e518ec8",
                  "id": 715,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setBaseMetadataURI",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 699,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 698,
                        "mutability": "mutable",
                        "name": "baseMetadataURI_",
                        "nodeType": "VariableDeclaration",
                        "scope": 715,
                        "src": "616:32:9",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 697,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "616:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "615:34:9"
                  },
                  "returnParameters": {
                    "id": 700,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "659:0:9"
                  },
                  "scope": 735,
                  "src": "588:214:9",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 733,
                    "nodeType": "Block",
                    "src": "880:87:9",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 726,
                                  "name": "baseMetadataURI",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 696,
                                  "src": "921:15:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                },
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "id": 727,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 717,
                                      "src": "938:2:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 728,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "toDecimalString",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 674,
                                    "src": "938:18:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (string memory)"
                                    }
                                  },
                                  "id": 729,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "938:20:9",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 724,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "904:3:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 725,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "904:16:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 730,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "904:55:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 723,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "897:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                              "typeString": "type(string storage pointer)"
                            },
                            "typeName": {
                              "id": 722,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "897:6:9",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 731,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "897:63:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 721,
                        "id": 732,
                        "nodeType": "Return",
                        "src": "890:70:9"
                      }
                    ]
                  },
                  "id": 734,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_uri",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 718,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 717,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 734,
                        "src": "822:10:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 716,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "822:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "821:12:9"
                  },
                  "returnParameters": {
                    "id": 721,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 720,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 734,
                        "src": "865:13:9",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 719,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "865:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "864:15:9"
                  },
                  "scope": 735,
                  "src": "808:159:9",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 736,
              "src": "379:590:9"
            }
          ],
          "src": "33:937:9"
        },
        "id": 9
      },
      "contracts/token/ERC1155/ERC1155InventoryBase.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155/ERC1155InventoryBase.sol",
          "exportedSymbols": {
            "ERC1155InventoryBase": [
              1299
            ],
            "ERC1155InventoryIdentifiersLib": [
              1381
            ],
            "IERC1155": [
              1496
            ],
            "IERC1155Inventory": [
              1599
            ],
            "IERC1155InventoryFunctions": [
              1636
            ],
            "IERC1155InventoryTotalSupply": [
              1648
            ],
            "IERC1155MetadataURI": [
              1660
            ],
            "IERC1155TokenReceiver": [
              1698
            ],
            "IERC165": [
              218
            ],
            "ManagedIdentity": [
              239
            ]
          },
          "id": 1300,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 737,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:10"
            },
            {
              "absolutePath": "contracts/token/ERC1155/ERC1155InventoryIdentifiersLib.sol",
              "file": "./ERC1155InventoryIdentifiersLib.sol",
              "id": 739,
              "nodeType": "ImportDirective",
              "scope": 1300,
              "sourceUnit": 1382,
              "src": "66:84:10",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 738,
                    "name": "ERC1155InventoryIdentifiersLib",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:30:10",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "id": 741,
              "nodeType": "ImportDirective",
              "scope": 1300,
              "sourceUnit": 219,
              "src": "151:93:10",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 740,
                    "name": "IERC165",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "159:7:10",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155.sol",
              "file": "./interfaces/IERC1155.sol",
              "id": 743,
              "nodeType": "ImportDirective",
              "scope": 1300,
              "sourceUnit": 1497,
              "src": "245:51:10",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 742,
                    "name": "IERC1155",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "253:8:10",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155InventoryFunctions.sol",
              "file": "./interfaces/IERC1155InventoryFunctions.sol",
              "id": 745,
              "nodeType": "ImportDirective",
              "scope": 1300,
              "sourceUnit": 1637,
              "src": "297:87:10",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 744,
                    "name": "IERC1155InventoryFunctions",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "305:26:10",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155Inventory.sol",
              "file": "./interfaces/IERC1155Inventory.sol",
              "id": 747,
              "nodeType": "ImportDirective",
              "scope": 1300,
              "sourceUnit": 1600,
              "src": "385:69:10",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 746,
                    "name": "IERC1155Inventory",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "393:17:10",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155MetadataURI.sol",
              "file": "./interfaces/IERC1155MetadataURI.sol",
              "id": 749,
              "nodeType": "ImportDirective",
              "scope": 1300,
              "sourceUnit": 1661,
              "src": "455:73:10",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 748,
                    "name": "IERC1155MetadataURI",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "463:19:10",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155InventoryTotalSupply.sol",
              "file": "./interfaces/IERC1155InventoryTotalSupply.sol",
              "id": 751,
              "nodeType": "ImportDirective",
              "scope": 1300,
              "sourceUnit": 1649,
              "src": "529:91:10",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 750,
                    "name": "IERC1155InventoryTotalSupply",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "537:28:10",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155TokenReceiver.sol",
              "file": "./interfaces/IERC1155TokenReceiver.sol",
              "id": 753,
              "nodeType": "ImportDirective",
              "scope": 1300,
              "sourceUnit": 1699,
              "src": "621:77:10",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 752,
                    "name": "IERC1155TokenReceiver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "629:21:10",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "id": 755,
              "nodeType": "ImportDirective",
              "scope": 1300,
              "sourceUnit": 240,
              "src": "699:102:10",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 754,
                    "name": "ManagedIdentity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "707:15:10",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 757,
                    "name": "ManagedIdentity",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 239,
                    "src": "1218:15:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ManagedIdentity_$239",
                      "typeString": "contract ManagedIdentity"
                    }
                  },
                  "id": 758,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1218:15:10"
                },
                {
                  "baseName": {
                    "id": 759,
                    "name": "IERC165",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 218,
                    "src": "1235:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC165_$218",
                      "typeString": "contract IERC165"
                    }
                  },
                  "id": 760,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1235:7:10"
                },
                {
                  "baseName": {
                    "id": 761,
                    "name": "IERC1155Inventory",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1599,
                    "src": "1244:17:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155Inventory_$1599",
                      "typeString": "contract IERC1155Inventory"
                    }
                  },
                  "id": 762,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1244:17:10"
                },
                {
                  "baseName": {
                    "id": 763,
                    "name": "IERC1155MetadataURI",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1660,
                    "src": "1263:19:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155MetadataURI_$1660",
                      "typeString": "contract IERC1155MetadataURI"
                    }
                  },
                  "id": 764,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1263:19:10"
                },
                {
                  "baseName": {
                    "id": 765,
                    "name": "IERC1155InventoryTotalSupply",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1648,
                    "src": "1284:28:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155InventoryTotalSupply_$1648",
                      "typeString": "contract IERC1155InventoryTotalSupply"
                    }
                  },
                  "id": 766,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1284:28:10"
                }
              ],
              "contractDependencies": [
                218,
                239,
                1496,
                1599,
                1636,
                1648,
                1660
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 756,
                "nodeType": "StructuredDocumentation",
                "src": "803:372:10",
                "text": " @title ERC1155 Inventory Base.\n @dev The functions `safeTransferFrom(address,address,uint256,uint256,bytes)`\n  and `safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)` need to be implemented by a child contract.\n @dev The function `uri(uint256)` needs to be implemented by a child contract, for example with the help of `NFTBaseMetadataURI`."
              },
              "fullyImplemented": false,
              "id": 1299,
              "linearizedBaseContracts": [
                1299,
                1648,
                1660,
                1599,
                1636,
                1496,
                218,
                239
              ],
              "name": "ERC1155InventoryBase",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 769,
                  "libraryName": {
                    "id": 767,
                    "name": "ERC1155InventoryIdentifiersLib",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1381,
                    "src": "1325:30:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155InventoryIdentifiersLib_$1381",
                      "typeString": "library ERC1155InventoryIdentifiersLib"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1319:49:10",
                  "typeName": {
                    "id": 768,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1360:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "constant": false,
                  "id": 771,
                  "mutability": "immutable",
                  "name": "_collectionMaskLength",
                  "nodeType": "VariableDeclaration",
                  "scope": 1299,
                  "src": "1374:48:10",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 770,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1374:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 774,
                  "mutability": "constant",
                  "name": "_ERC1155_RECEIVED",
                  "nodeType": "VariableDeclaration",
                  "scope": 1299,
                  "src": "1514:55:10",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 772,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1514:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": {
                    "hexValue": "30786632336136653631",
                    "id": 773,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1559:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_4063915617_by_1",
                      "typeString": "int_const 4063915617"
                    },
                    "value": "0xf23a6e61"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 777,
                  "mutability": "constant",
                  "name": "_ERC1155_BATCH_RECEIVED",
                  "nodeType": "VariableDeclaration",
                  "scope": 1299,
                  "src": "1670:61:10",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 775,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1670:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": {
                    "hexValue": "30786263313937633831",
                    "id": 776,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1721:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_3155786881_by_1",
                      "typeString": "int_const 3155786881"
                    },
                    "value": "0xbc197c81"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 780,
                  "mutability": "constant",
                  "name": "_BURNT_NFT_OWNER",
                  "nodeType": "VariableDeclaration",
                  "scope": 1299,
                  "src": "1790:111:10",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 778,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1790:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "307864656164303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030",
                    "id": 779,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1835:66:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_100719116927691798707895874029850069994745719541394658707722161504685790330880_by_1",
                      "typeString": "int_const 1007...(70 digits omitted)...0880"
                    },
                    "value": "0xdead000000000000000000000000000000000000000000000000000000000000"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 786,
                  "mutability": "mutable",
                  "name": "_operators",
                  "nodeType": "VariableDeclaration",
                  "scope": 1299,
                  "src": "1948:64:10",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                    "typeString": "mapping(address => mapping(address => bool))"
                  },
                  "typeName": {
                    "id": 785,
                    "keyType": {
                      "id": 781,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1956:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1948:44:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                      "typeString": "mapping(address => mapping(address => bool))"
                    },
                    "valueType": {
                      "id": 784,
                      "keyType": {
                        "id": 782,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1975:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "1967:24:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      },
                      "valueType": {
                        "id": 783,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1986:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 792,
                  "mutability": "mutable",
                  "name": "_balances",
                  "nodeType": "VariableDeclaration",
                  "scope": 1299,
                  "src": "2063:66:10",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                    "typeString": "mapping(uint256 => mapping(address => uint256))"
                  },
                  "typeName": {
                    "id": 791,
                    "keyType": {
                      "id": 787,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2071:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2063:47:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                      "typeString": "mapping(uint256 => mapping(address => uint256))"
                    },
                    "valueType": {
                      "id": 790,
                      "keyType": {
                        "id": 788,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2090:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "2082:27:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      },
                      "valueType": {
                        "id": 789,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2101:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 796,
                  "mutability": "mutable",
                  "name": "_supplies",
                  "nodeType": "VariableDeclaration",
                  "scope": 1299,
                  "src": "2170:46:10",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "typeName": {
                    "id": 795,
                    "keyType": {
                      "id": 793,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2178:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2170:27:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                      "typeString": "mapping(uint256 => uint256)"
                    },
                    "valueType": {
                      "id": 794,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2189:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 800,
                  "mutability": "mutable",
                  "name": "_owners",
                  "nodeType": "VariableDeclaration",
                  "scope": 1299,
                  "src": "2249:44:10",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "typeName": {
                    "id": 799,
                    "keyType": {
                      "id": 797,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2257:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2249:27:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                      "typeString": "mapping(uint256 => uint256)"
                    },
                    "valueType": {
                      "id": 798,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2268:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 804,
                  "mutability": "mutable",
                  "name": "_creators",
                  "nodeType": "VariableDeclaration",
                  "scope": 1299,
                  "src": "2335:46:10",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                    "typeString": "mapping(uint256 => address)"
                  },
                  "typeName": {
                    "id": 803,
                    "keyType": {
                      "id": 801,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2343:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2335:27:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                      "typeString": "mapping(uint256 => address)"
                    },
                    "valueType": {
                      "id": 802,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2354:7:10",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 824,
                    "nodeType": "Block",
                    "src": "2430:167:10",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 816,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 812,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 810,
                                  "name": "collectionMaskLength",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 806,
                                  "src": "2448:20:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 811,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2472:1:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "2448:25:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 815,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 813,
                                  "name": "collectionMaskLength",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 806,
                                  "src": "2477:20:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "hexValue": "323536",
                                  "id": 814,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2500:3:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_256_by_1",
                                    "typeString": "int_const 256"
                                  },
                                  "value": "256"
                                },
                                "src": "2477:26:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2448:55:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a2077726f6e67206d61736b206c656e677468",
                              "id": 817,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2505:30:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_cdc8ca47203c1769e556e8880975dcf9b64d0882efa61fd892496f119b4e1e8c",
                                "typeString": "literal_string \"Inventory: wrong mask length\""
                              },
                              "value": "Inventory: wrong mask length"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_cdc8ca47203c1769e556e8880975dcf9b64d0882efa61fd892496f119b4e1e8c",
                                "typeString": "literal_string \"Inventory: wrong mask length\""
                              }
                            ],
                            "id": 809,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2440:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 818,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2440:96:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 819,
                        "nodeType": "ExpressionStatement",
                        "src": "2440:96:10"
                      },
                      {
                        "expression": {
                          "id": 822,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 820,
                            "name": "_collectionMaskLength",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 771,
                            "src": "2546:21:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 821,
                            "name": "collectionMaskLength",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 806,
                            "src": "2570:20:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2546:44:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 823,
                        "nodeType": "ExpressionStatement",
                        "src": "2546:44:10"
                      }
                    ]
                  },
                  "id": 825,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 807,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 806,
                        "mutability": "mutable",
                        "name": "collectionMaskLength",
                        "nodeType": "VariableDeclaration",
                        "scope": 825,
                        "src": "2400:28:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 805,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2400:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2399:30:10"
                  },
                  "returnParameters": {
                    "id": 808,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2430:0:10"
                  },
                  "scope": 1299,
                  "src": "2388:209:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    217
                  ],
                  "body": {
                    "id": 869,
                    "nodeType": "Block",
                    "src": "2851:353:10",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 867,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 860,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 853,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 846,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "id": 839,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 834,
                                    "name": "interfaceId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 828,
                                    "src": "2880:11:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 836,
                                          "name": "IERC165",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 218,
                                          "src": "2900:7:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_IERC165_$218_$",
                                            "typeString": "type(contract IERC165)"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_type$_t_contract$_IERC165_$218_$",
                                            "typeString": "type(contract IERC165)"
                                          }
                                        ],
                                        "id": 835,
                                        "name": "type",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -27,
                                        "src": "2895:4:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                          "typeString": "function () pure"
                                        }
                                      },
                                      "id": 837,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2895:13:10",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_meta_type_t_contract$_IERC165_$218",
                                        "typeString": "type(contract IERC165)"
                                      }
                                    },
                                    "id": 838,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "interfaceId",
                                    "nodeType": "MemberAccess",
                                    "src": "2895:25:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "src": "2880:40:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "||",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "id": 845,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 840,
                                    "name": "interfaceId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 828,
                                    "src": "2936:11:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 842,
                                          "name": "IERC1155",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1496,
                                          "src": "2956:8:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_IERC1155_$1496_$",
                                            "typeString": "type(contract IERC1155)"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_type$_t_contract$_IERC1155_$1496_$",
                                            "typeString": "type(contract IERC1155)"
                                          }
                                        ],
                                        "id": 841,
                                        "name": "type",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -27,
                                        "src": "2951:4:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                          "typeString": "function () pure"
                                        }
                                      },
                                      "id": 843,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2951:14:10",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155_$1496",
                                        "typeString": "type(contract IERC1155)"
                                      }
                                    },
                                    "id": 844,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "interfaceId",
                                    "nodeType": "MemberAccess",
                                    "src": "2951:26:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "src": "2936:41:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "2880:97:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                "id": 852,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 847,
                                  "name": "interfaceId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 828,
                                  "src": "2993:11:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 849,
                                        "name": "IERC1155MetadataURI",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1660,
                                        "src": "3013:19:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IERC1155MetadataURI_$1660_$",
                                          "typeString": "type(contract IERC1155MetadataURI)"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_type$_t_contract$_IERC1155MetadataURI_$1660_$",
                                          "typeString": "type(contract IERC1155MetadataURI)"
                                        }
                                      ],
                                      "id": 848,
                                      "name": "type",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -27,
                                      "src": "3008:4:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 850,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3008:25:10",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155MetadataURI_$1660",
                                      "typeString": "type(contract IERC1155MetadataURI)"
                                    }
                                  },
                                  "id": 851,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "interfaceId",
                                  "nodeType": "MemberAccess",
                                  "src": "3008:37:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "2993:52:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2880:165:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 859,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 854,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 828,
                                "src": "3061:11:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 856,
                                      "name": "IERC1155InventoryFunctions",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1636,
                                      "src": "3081:26:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC1155InventoryFunctions_$1636_$",
                                        "typeString": "type(contract IERC1155InventoryFunctions)"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_contract$_IERC1155InventoryFunctions_$1636_$",
                                        "typeString": "type(contract IERC1155InventoryFunctions)"
                                      }
                                    ],
                                    "id": 855,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -27,
                                    "src": "3076:4:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 857,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3076:32:10",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155InventoryFunctions_$1636",
                                    "typeString": "type(contract IERC1155InventoryFunctions)"
                                  }
                                },
                                "id": 858,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "interfaceId",
                                "nodeType": "MemberAccess",
                                "src": "3076:44:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "3061:59:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "2880:240:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 866,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 861,
                              "name": "interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 828,
                              "src": "3136:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 863,
                                    "name": "IERC1155InventoryTotalSupply",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1648,
                                    "src": "3156:28:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155InventoryTotalSupply_$1648_$",
                                      "typeString": "type(contract IERC1155InventoryTotalSupply)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155InventoryTotalSupply_$1648_$",
                                      "typeString": "type(contract IERC1155InventoryTotalSupply)"
                                    }
                                  ],
                                  "id": 862,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "3151:4:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 864,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3151:34:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155InventoryTotalSupply_$1648",
                                  "typeString": "type(contract IERC1155InventoryTotalSupply)"
                                }
                              },
                              "id": 865,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "3151:46:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "3136:61:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "2880:317:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 833,
                        "id": 868,
                        "nodeType": "Return",
                        "src": "2861:336:10"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 826,
                    "nodeType": "StructuredDocumentation",
                    "src": "2732:23:10",
                    "text": "@inheritdoc IERC165"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 870,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 830,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2827:8:10"
                  },
                  "parameters": {
                    "id": 829,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 828,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nodeType": "VariableDeclaration",
                        "scope": 870,
                        "src": "2787:18:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 827,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "2787:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2786:20:10"
                  },
                  "returnParameters": {
                    "id": 833,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 832,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 870,
                        "src": "2845:4:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 831,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2845:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2844:6:10"
                  },
                  "scope": 1299,
                  "src": "2760:444:10",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1552
                  ],
                  "body": {
                    "id": 918,
                    "nodeType": "Block",
                    "src": "3470:248:10",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 887,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 882,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 873,
                                "src": "3488:5:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 885,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3505:1:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 884,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3497:7:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 883,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3497:7:10",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 886,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3497:10:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "3488:19:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207a65726f2061646472657373",
                              "id": 888,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3509:25:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_42707ea16674aa865e75081e780ce914a2dbf36492fac37b9d85bcb15fc7e9d7",
                                "typeString": "literal_string \"Inventory: zero address\""
                              },
                              "value": "Inventory: zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_42707ea16674aa865e75081e780ce914a2dbf36492fac37b9d85bcb15fc7e9d7",
                                "typeString": "literal_string \"Inventory: zero address\""
                              }
                            ],
                            "id": 881,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3480:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 889,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3480:55:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 890,
                        "nodeType": "ExpressionStatement",
                        "src": "3480:55:10"
                      },
                      {
                        "condition": {
                          "arguments": [
                            {
                              "id": 893,
                              "name": "_collectionMaskLength",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 771,
                              "src": "3572:21:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 891,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 875,
                              "src": "3550:2:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 892,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isNonFungibleToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1345,
                            "src": "3550:21:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (bool)"
                            }
                          },
                          "id": 894,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3550:44:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 911,
                        "nodeType": "IfStatement",
                        "src": "3546:128:10",
                        "trueBody": {
                          "id": 910,
                          "nodeType": "Block",
                          "src": "3596:78:10",
                          "statements": [
                            {
                              "expression": {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 905,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "baseExpression": {
                                              "id": 899,
                                              "name": "_owners",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 800,
                                              "src": "3633:7:10",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                                "typeString": "mapping(uint256 => uint256)"
                                              }
                                            },
                                            "id": 901,
                                            "indexExpression": {
                                              "id": 900,
                                              "name": "id",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 875,
                                              "src": "3641:2:10",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "3633:11:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 898,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "3625:7:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint160_$",
                                            "typeString": "type(uint160)"
                                          },
                                          "typeName": {
                                            "id": 897,
                                            "name": "uint160",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "3625:7:10",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 902,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3625:20:10",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        }
                                      ],
                                      "id": 896,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "3617:7:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 895,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3617:7:10",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 903,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3617:29:10",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "id": 904,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 873,
                                    "src": "3650:5:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "3617:38:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseExpression": {
                                  "hexValue": "30",
                                  "id": 907,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3662:1:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "id": 908,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "Conditional",
                                "src": "3617:46:10",
                                "trueExpression": {
                                  "hexValue": "31",
                                  "id": 906,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3658:1:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "functionReturnParameters": 880,
                              "id": 909,
                              "nodeType": "Return",
                              "src": "3610:53:10"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 912,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 792,
                              "src": "3691:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(uint256 => mapping(address => uint256))"
                              }
                            },
                            "id": 914,
                            "indexExpression": {
                              "id": 913,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 875,
                              "src": "3701:2:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3691:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 916,
                          "indexExpression": {
                            "id": 915,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 873,
                            "src": "3705:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3691:20:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 880,
                        "id": 917,
                        "nodeType": "Return",
                        "src": "3684:27:10"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 871,
                    "nodeType": "StructuredDocumentation",
                    "src": "3339:33:10",
                    "text": "@inheritdoc IERC1155Inventory"
                  },
                  "functionSelector": "00fdd58e",
                  "id": 919,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 877,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3443:8:10"
                  },
                  "parameters": {
                    "id": 876,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 873,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 919,
                        "src": "3396:13:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 872,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3396:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 875,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 919,
                        "src": "3411:10:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 874,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3411:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3395:27:10"
                  },
                  "returnParameters": {
                    "id": 880,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 879,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 919,
                        "src": "3461:7:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 878,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3461:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3460:9:10"
                  },
                  "scope": 1299,
                  "src": "3377:341:10",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1566
                  ],
                  "body": {
                    "id": 982,
                    "nodeType": "Block",
                    "src": "3895:302:10",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 938,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 934,
                                  "name": "owners",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 923,
                                  "src": "3913:6:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 935,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "3913:13:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 936,
                                  "name": "ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 926,
                                  "src": "3930:3:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                    "typeString": "uint256[] calldata"
                                  }
                                },
                                "id": 937,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "3930:10:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3913:27:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a20696e636f6e73697374656e7420617272617973",
                              "id": 939,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3942:32:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7a126caadb5177dc3b65272d4b18471177661f27977eda64cf57724e2b12039b",
                                "typeString": "literal_string \"Inventory: inconsistent arrays\""
                              },
                              "value": "Inventory: inconsistent arrays"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7a126caadb5177dc3b65272d4b18471177661f27977eda64cf57724e2b12039b",
                                "typeString": "literal_string \"Inventory: inconsistent arrays\""
                              }
                            ],
                            "id": 933,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3905:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 940,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3905:70:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 941,
                        "nodeType": "ExpressionStatement",
                        "src": "3905:70:10"
                      },
                      {
                        "assignments": [
                          946
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 946,
                            "mutability": "mutable",
                            "name": "balances",
                            "nodeType": "VariableDeclaration",
                            "scope": 982,
                            "src": "3986:25:10",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 944,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3986:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 945,
                              "nodeType": "ArrayTypeName",
                              "src": "3986:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 953,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 950,
                                "name": "owners",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 923,
                                "src": "4028:6:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 951,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "4028:13:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 949,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "4014:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 947,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4018:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 948,
                              "nodeType": "ArrayTypeName",
                              "src": "4018:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 952,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4014:28:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3986:56:10"
                      },
                      {
                        "body": {
                          "id": 978,
                          "nodeType": "Block",
                          "src": "4098:67:10",
                          "statements": [
                            {
                              "expression": {
                                "id": 976,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 965,
                                    "name": "balances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 946,
                                    "src": "4112:8:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 967,
                                  "indexExpression": {
                                    "id": 966,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 955,
                                    "src": "4121:1:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4112:11:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "baseExpression": {
                                        "id": 969,
                                        "name": "owners",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 923,
                                        "src": "4136:6:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                          "typeString": "address[] calldata"
                                        }
                                      },
                                      "id": 971,
                                      "indexExpression": {
                                        "id": 970,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 955,
                                        "src": "4143:1:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4136:9:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "baseExpression": {
                                        "id": 972,
                                        "name": "ids",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 926,
                                        "src": "4147:3:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                          "typeString": "uint256[] calldata"
                                        }
                                      },
                                      "id": 974,
                                      "indexExpression": {
                                        "id": 973,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 955,
                                        "src": "4151:1:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4147:6:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 968,
                                    "name": "balanceOf",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 919,
                                    "src": "4126:9:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (address,uint256) view returns (uint256)"
                                    }
                                  },
                                  "id": 975,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4126:28:10",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4112:42:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 977,
                              "nodeType": "ExpressionStatement",
                              "src": "4112:42:10"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 961,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 958,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 955,
                            "src": "4073:1:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "expression": {
                              "id": 959,
                              "name": "owners",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 923,
                              "src": "4078:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 960,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "4078:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4073:18:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 979,
                        "initializationExpression": {
                          "assignments": [
                            955
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 955,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 979,
                              "src": "4058:9:10",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 954,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4058:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 957,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 956,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4070:1:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "4058:13:10"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 963,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "4093:3:10",
                            "subExpression": {
                              "id": 962,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 955,
                              "src": "4095:1:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 964,
                          "nodeType": "ExpressionStatement",
                          "src": "4093:3:10"
                        },
                        "nodeType": "ForStatement",
                        "src": "4053:112:10"
                      },
                      {
                        "expression": {
                          "id": 980,
                          "name": "balances",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 946,
                          "src": "4182:8:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "functionReturnParameters": 932,
                        "id": 981,
                        "nodeType": "Return",
                        "src": "4175:15:10"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 920,
                    "nodeType": "StructuredDocumentation",
                    "src": "3724:33:10",
                    "text": "@inheritdoc IERC1155Inventory"
                  },
                  "functionSelector": "4e1273f4",
                  "id": 983,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOfBatch",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 928,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3859:8:10"
                  },
                  "parameters": {
                    "id": 927,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 923,
                        "mutability": "mutable",
                        "name": "owners",
                        "nodeType": "VariableDeclaration",
                        "scope": 983,
                        "src": "3786:25:10",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 921,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3786:7:10",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 922,
                          "nodeType": "ArrayTypeName",
                          "src": "3786:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 926,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 983,
                        "src": "3813:22:10",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 924,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3813:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 925,
                          "nodeType": "ArrayTypeName",
                          "src": "3813:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3785:51:10"
                  },
                  "returnParameters": {
                    "id": 932,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 931,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 983,
                        "src": "3877:16:10",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 929,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3877:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 930,
                          "nodeType": "ArrayTypeName",
                          "src": "3877:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3876:18:10"
                  },
                  "scope": 1299,
                  "src": "3762:435:10",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1485
                  ],
                  "body": {
                    "id": 1018,
                    "nodeType": "Block",
                    "src": "4316:217:10",
                    "statements": [
                      {
                        "assignments": [
                          993
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 993,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 1018,
                            "src": "4326:14:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 992,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4326:7:10",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 996,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 994,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 229,
                            "src": "4343:10:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 995,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4343:12:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4326:29:10"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1000,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 998,
                                "name": "operator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 986,
                                "src": "4373:8:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "id": 999,
                                "name": "sender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 993,
                                "src": "4385:6:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4373:18:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a2073656c662d617070726f76616c",
                              "id": 1001,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4393:26:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7c4ceb33c8a3e4251a079e5bc00a1d088f7b07efcf485dc31e509282980ff352",
                                "typeString": "literal_string \"Inventory: self-approval\""
                              },
                              "value": "Inventory: self-approval"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7c4ceb33c8a3e4251a079e5bc00a1d088f7b07efcf485dc31e509282980ff352",
                                "typeString": "literal_string \"Inventory: self-approval\""
                              }
                            ],
                            "id": 997,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4365:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1002,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4365:55:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1003,
                        "nodeType": "ExpressionStatement",
                        "src": "4365:55:10"
                      },
                      {
                        "expression": {
                          "id": 1010,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 1004,
                                "name": "_operators",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 786,
                                "src": "4430:10:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                  "typeString": "mapping(address => mapping(address => bool))"
                                }
                              },
                              "id": 1007,
                              "indexExpression": {
                                "id": 1005,
                                "name": "sender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 993,
                                "src": "4441:6:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4430:18:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 1008,
                            "indexExpression": {
                              "id": 1006,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 986,
                              "src": "4449:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4430:28:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 1009,
                            "name": "approved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 988,
                            "src": "4461:8:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "4430:39:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1011,
                        "nodeType": "ExpressionStatement",
                        "src": "4430:39:10"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 1013,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 993,
                              "src": "4499:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1014,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 986,
                              "src": "4507:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1015,
                              "name": "approved",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 988,
                              "src": "4517:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 1012,
                            "name": "ApprovalForAll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1418,
                            "src": "4484:14:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,bool)"
                            }
                          },
                          "id": 1016,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4484:42:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1017,
                        "nodeType": "EmitStatement",
                        "src": "4479:47:10"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 984,
                    "nodeType": "StructuredDocumentation",
                    "src": "4203:24:10",
                    "text": "@inheritdoc IERC1155"
                  },
                  "functionSelector": "a22cb465",
                  "id": 1019,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setApprovalForAll",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 990,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4307:8:10"
                  },
                  "parameters": {
                    "id": 989,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 986,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 1019,
                        "src": "4259:16:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 985,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4259:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 988,
                        "mutability": "mutable",
                        "name": "approved",
                        "nodeType": "VariableDeclaration",
                        "scope": 1019,
                        "src": "4277:13:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 987,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4277:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4258:33:10"
                  },
                  "returnParameters": {
                    "id": 991,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4316:0:10"
                  },
                  "scope": 1299,
                  "src": "4232:301:10",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1495
                  ],
                  "body": {
                    "id": 1036,
                    "nodeType": "Block",
                    "src": "4676:56:10",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 1030,
                              "name": "_operators",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 786,
                              "src": "4693:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                "typeString": "mapping(address => mapping(address => bool))"
                              }
                            },
                            "id": 1032,
                            "indexExpression": {
                              "id": 1031,
                              "name": "tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1022,
                              "src": "4704:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4693:22:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 1034,
                          "indexExpression": {
                            "id": 1033,
                            "name": "operator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1024,
                            "src": "4716:8:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4693:32:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 1029,
                        "id": 1035,
                        "nodeType": "Return",
                        "src": "4686:39:10"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1020,
                    "nodeType": "StructuredDocumentation",
                    "src": "4539:24:10",
                    "text": "@inheritdoc IERC1155"
                  },
                  "functionSelector": "e985e9c5",
                  "id": 1037,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isApprovedForAll",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1026,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4652:8:10"
                  },
                  "parameters": {
                    "id": 1025,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1022,
                        "mutability": "mutable",
                        "name": "tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 1037,
                        "src": "4594:18:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1021,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4594:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1024,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 1037,
                        "src": "4614:16:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1023,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4614:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4593:38:10"
                  },
                  "returnParameters": {
                    "id": 1029,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1028,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1037,
                        "src": "4670:4:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1027,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4670:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4669:6:10"
                  },
                  "scope": 1299,
                  "src": "4568:164:10",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1532
                  ],
                  "body": {
                    "id": 1050,
                    "nodeType": "Block",
                    "src": "4983:44:10",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 1046,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1040,
                              "src": "5000:2:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 1047,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isFungibleToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1321,
                            "src": "5000:18:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (bool)"
                            }
                          },
                          "id": 1048,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5000:20:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 1045,
                        "id": 1049,
                        "nodeType": "Return",
                        "src": "4993:27:10"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1038,
                    "nodeType": "StructuredDocumentation",
                    "src": "4867:33:10",
                    "text": "@inheritdoc IERC1155Inventory"
                  },
                  "functionSelector": "adebf6f2",
                  "id": 1051,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isFungible",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1042,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4959:8:10"
                  },
                  "parameters": {
                    "id": 1041,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1040,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 1051,
                        "src": "4925:10:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1039,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4925:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4924:12:10"
                  },
                  "returnParameters": {
                    "id": 1045,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1044,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1051,
                        "src": "4977:4:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1043,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4977:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4976:6:10"
                  },
                  "scope": 1299,
                  "src": "4905:122:10",
                  "stateMutability": "pure",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1541
                  ],
                  "body": {
                    "id": 1073,
                    "nodeType": "Block",
                    "src": "5157:168:10",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 1063,
                                  "name": "_collectionMaskLength",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 771,
                                  "src": "5200:21:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 1061,
                                  "name": "nftId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1054,
                                  "src": "5175:5:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 1062,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isNonFungibleToken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1345,
                                "src": "5175:24:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (bool)"
                                }
                              },
                              "id": 1064,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5175:47:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f7420616e204e4654",
                              "id": 1065,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5224:23:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6f6b3072d8f66101f2906a615e7ccee3daa7b495817e174efdc83fec1dfaad68",
                                "typeString": "literal_string \"Inventory: not an NFT\""
                              },
                              "value": "Inventory: not an NFT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6f6b3072d8f66101f2906a615e7ccee3daa7b495817e174efdc83fec1dfaad68",
                                "typeString": "literal_string \"Inventory: not an NFT\""
                              }
                            ],
                            "id": 1060,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5167:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1066,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5167:81:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1067,
                        "nodeType": "ExpressionStatement",
                        "src": "5167:81:10"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1070,
                              "name": "_collectionMaskLength",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 771,
                              "src": "5296:21:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 1068,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1054,
                              "src": "5265:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 1069,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getNonFungibleCollection",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1362,
                            "src": "5265:30:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 1071,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5265:53:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 1059,
                        "id": 1072,
                        "nodeType": "Return",
                        "src": "5258:60:10"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1052,
                    "nodeType": "StructuredDocumentation",
                    "src": "5033:33:10",
                    "text": "@inheritdoc IERC1155Inventory"
                  },
                  "functionSelector": "c7778baa",
                  "id": 1074,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "collectionOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1056,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5130:8:10"
                  },
                  "parameters": {
                    "id": 1055,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1054,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 1074,
                        "src": "5093:13:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1053,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5093:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5092:15:10"
                  },
                  "returnParameters": {
                    "id": 1059,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1058,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1074,
                        "src": "5148:7:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1057,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5148:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5147:9:10"
                  },
                  "scope": 1299,
                  "src": "5071:254:10",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1523
                  ],
                  "body": {
                    "id": 1107,
                    "nodeType": "Block",
                    "src": "5448:156:10",
                    "statements": [
                      {
                        "assignments": [
                          1084
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1084,
                            "mutability": "mutable",
                            "name": "owner",
                            "nodeType": "VariableDeclaration",
                            "scope": 1107,
                            "src": "5458:13:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 1083,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5458:7:10",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1094,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "baseExpression": {
                                    "id": 1089,
                                    "name": "_owners",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 800,
                                    "src": "5490:7:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 1091,
                                  "indexExpression": {
                                    "id": 1090,
                                    "name": "nftId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1077,
                                    "src": "5498:5:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5490:14:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 1088,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5482:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint160_$",
                                  "typeString": "type(uint160)"
                                },
                                "typeName": {
                                  "id": 1087,
                                  "name": "uint160",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5482:7:10",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1092,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5482:23:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            ],
                            "id": 1086,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5474:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 1085,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5474:7:10",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 1093,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5474:32:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5458:48:10"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1101,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1096,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1084,
                                "src": "5524:5:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 1099,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5541:1:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 1098,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5533:7:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1097,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5533:7:10",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1100,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5533:10:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "5524:19:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f6e2d6578697374696e67204e4654",
                              "id": 1102,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5545:29:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d5290294c0b7ad6913fae1832076fb2552b80ffccbd7db3c426d932ecf724f10",
                                "typeString": "literal_string \"Inventory: non-existing NFT\""
                              },
                              "value": "Inventory: non-existing NFT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d5290294c0b7ad6913fae1832076fb2552b80ffccbd7db3c426d932ecf724f10",
                                "typeString": "literal_string \"Inventory: non-existing NFT\""
                              }
                            ],
                            "id": 1095,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5516:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1103,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5516:59:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1104,
                        "nodeType": "ExpressionStatement",
                        "src": "5516:59:10"
                      },
                      {
                        "expression": {
                          "id": 1105,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1084,
                          "src": "5592:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 1082,
                        "id": 1106,
                        "nodeType": "Return",
                        "src": "5585:12:10"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1075,
                    "nodeType": "StructuredDocumentation",
                    "src": "5331:33:10",
                    "text": "@inheritdoc IERC1155Inventory"
                  },
                  "functionSelector": "6352211e",
                  "id": 1108,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ownerOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1079,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5421:8:10"
                  },
                  "parameters": {
                    "id": 1078,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1077,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 1108,
                        "src": "5386:13:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1076,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5386:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5385:15:10"
                  },
                  "returnParameters": {
                    "id": 1082,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1081,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1108,
                        "src": "5439:7:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1080,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5439:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5438:9:10"
                  },
                  "scope": 1299,
                  "src": "5369:235:10",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1647
                  ],
                  "body": {
                    "id": 1146,
                    "nodeType": "Block",
                    "src": "5870:200:10",
                    "statements": [
                      {
                        "condition": {
                          "arguments": [
                            {
                              "id": 1119,
                              "name": "_collectionMaskLength",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 771,
                              "src": "5906:21:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 1117,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1111,
                              "src": "5884:2:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 1118,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isNonFungibleToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1345,
                            "src": "5884:21:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (bool)"
                            }
                          },
                          "id": 1120,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5884:44:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 1144,
                          "nodeType": "Block",
                          "src": "6019:45:10",
                          "statements": [
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 1140,
                                  "name": "_supplies",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 796,
                                  "src": "6040:9:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 1142,
                                "indexExpression": {
                                  "id": 1141,
                                  "name": "id",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1111,
                                  "src": "6050:2:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6040:13:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 1116,
                              "id": 1143,
                              "nodeType": "Return",
                              "src": "6033:20:10"
                            }
                          ]
                        },
                        "id": 1145,
                        "nodeType": "IfStatement",
                        "src": "5880:184:10",
                        "trueBody": {
                          "id": 1139,
                          "nodeType": "Block",
                          "src": "5930:83:10",
                          "statements": [
                            {
                              "expression": {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  },
                                  "id": 1134,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "baseExpression": {
                                              "id": 1125,
                                              "name": "_owners",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 800,
                                              "src": "5967:7:10",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                                "typeString": "mapping(uint256 => uint256)"
                                              }
                                            },
                                            "id": 1127,
                                            "indexExpression": {
                                              "id": 1126,
                                              "name": "id",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1111,
                                              "src": "5975:2:10",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "5967:11:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 1124,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "5959:7:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint160_$",
                                            "typeString": "type(uint160)"
                                          },
                                          "typeName": {
                                            "id": 1123,
                                            "name": "uint160",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "5959:7:10",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 1128,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5959:20:10",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        }
                                      ],
                                      "id": 1122,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5951:7:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 1121,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5951:7:10",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 1129,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5951:29:10",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 1132,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5992:1:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 1131,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5984:7:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 1130,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5984:7:10",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 1133,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5984:10:10",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "src": "5951:43:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseExpression": {
                                  "hexValue": "31",
                                  "id": 1136,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6001:1:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "id": 1137,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "Conditional",
                                "src": "5951:51:10",
                                "trueExpression": {
                                  "hexValue": "30",
                                  "id": 1135,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5997:1:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "functionReturnParameters": 1116,
                              "id": 1138,
                              "nodeType": "Return",
                              "src": "5944:58:10"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1109,
                    "nodeType": "StructuredDocumentation",
                    "src": "5739:44:10",
                    "text": "@inheritdoc IERC1155InventoryTotalSupply"
                  },
                  "functionSelector": "bd85b039",
                  "id": 1147,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1113,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5843:8:10"
                  },
                  "parameters": {
                    "id": 1112,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1111,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 1147,
                        "src": "5809:10:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1110,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5809:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5808:12:10"
                  },
                  "returnParameters": {
                    "id": 1116,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1115,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1147,
                        "src": "5861:7:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1114,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5861:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5860:9:10"
                  },
                  "scope": 1299,
                  "src": "5788:282:10",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 1188,
                    "nodeType": "Block",
                    "src": "6584:328:10",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1158,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "6602:55:10",
                              "subExpression": {
                                "arguments": [
                                  {
                                    "id": 1156,
                                    "name": "_collectionMaskLength",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 771,
                                    "src": "6635:21:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 1154,
                                    "name": "collectionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1150,
                                    "src": "6603:12:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 1155,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "isNonFungibleToken",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1345,
                                  "src": "6603:31:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (bool)"
                                  }
                                },
                                "id": 1157,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6603:54:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f74206120636f6c6c656374696f6e",
                              "id": 1159,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6659:29:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4cf1a66cbd2b296ca2a93478debecc083a26a6ddc0b56961dad8cdd18f419b26",
                                "typeString": "literal_string \"Inventory: not a collection\""
                              },
                              "value": "Inventory: not a collection"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4cf1a66cbd2b296ca2a93478debecc083a26a6ddc0b56961dad8cdd18f419b26",
                                "typeString": "literal_string \"Inventory: not a collection\""
                              }
                            ],
                            "id": 1153,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6594:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1160,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6594:95:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1161,
                        "nodeType": "ExpressionStatement",
                        "src": "6594:95:10"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1170,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "baseExpression": {
                                  "id": 1163,
                                  "name": "_creators",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 804,
                                  "src": "6707:9:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                    "typeString": "mapping(uint256 => address)"
                                  }
                                },
                                "id": 1165,
                                "indexExpression": {
                                  "id": 1164,
                                  "name": "collectionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1150,
                                  "src": "6717:12:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6707:23:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 1168,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6742:1:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 1167,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6734:7:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1166,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6734:7:10",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1169,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6734:10:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "6707:37:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206578697374696e6720636f6c6c656374696f6e",
                              "id": 1171,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6746:32:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_65351934c1a25270e8f5422cd0ed89ae29b70d27a5a34dc7d2c70cfb7e4d286c",
                                "typeString": "literal_string \"Inventory: existing collection\""
                              },
                              "value": "Inventory: existing collection"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_65351934c1a25270e8f5422cd0ed89ae29b70d27a5a34dc7d2c70cfb7e4d286c",
                                "typeString": "literal_string \"Inventory: existing collection\""
                              }
                            ],
                            "id": 1162,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6699:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1172,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6699:80:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1173,
                        "nodeType": "ExpressionStatement",
                        "src": "6699:80:10"
                      },
                      {
                        "expression": {
                          "id": 1179,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 1174,
                              "name": "_creators",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 804,
                              "src": "6789:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 1176,
                            "indexExpression": {
                              "id": 1175,
                              "name": "collectionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1150,
                              "src": "6799:12:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6789:23:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 1177,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 229,
                              "src": "6815:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                "typeString": "function () view returns (address payable)"
                              }
                            },
                            "id": 1178,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6815:12:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "6789:38:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1180,
                        "nodeType": "ExpressionStatement",
                        "src": "6789:38:10"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 1182,
                              "name": "collectionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1150,
                              "src": "6860:12:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 1183,
                                  "name": "collectionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1150,
                                  "src": "6874:12:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 1184,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isFungibleToken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1321,
                                "src": "6874:28:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (bool)"
                                }
                              },
                              "id": 1185,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6874:30:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 1181,
                            "name": "CollectionCreated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1514,
                            "src": "6842:17:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_bool_$returns$__$",
                              "typeString": "function (uint256,bool)"
                            }
                          },
                          "id": 1186,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6842:63:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1187,
                        "nodeType": "EmitStatement",
                        "src": "6837:68:10"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1148,
                    "nodeType": "StructuredDocumentation",
                    "src": "6205:308:10",
                    "text": " Creates a collection (optional).\n @dev Reverts if `collectionId` does not represent a collection.\n @dev Reverts if `collectionId` has already been created.\n @dev Emits a {IERC1155Inventory-CollectionCreated} event.\n @param collectionId Identifier of the collection."
                  },
                  "id": 1189,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_createCollection",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1151,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1150,
                        "mutability": "mutable",
                        "name": "collectionId",
                        "nodeType": "VariableDeclaration",
                        "scope": 1189,
                        "src": "6545:20:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1149,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6545:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6544:22:10"
                  },
                  "returnParameters": {
                    "id": 1152,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6584:0:10"
                  },
                  "scope": 1299,
                  "src": "6518:394:10",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1209,
                    "nodeType": "Block",
                    "src": "6998:152:10",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1201,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "7016:55:10",
                              "subExpression": {
                                "arguments": [
                                  {
                                    "id": 1199,
                                    "name": "_collectionMaskLength",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 771,
                                    "src": "7049:21:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 1197,
                                    "name": "collectionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1191,
                                    "src": "7017:12:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 1198,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "isNonFungibleToken",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1345,
                                  "src": "7017:31:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (bool)"
                                  }
                                },
                                "id": 1200,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7017:54:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f74206120636f6c6c656374696f6e",
                              "id": 1202,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7073:29:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4cf1a66cbd2b296ca2a93478debecc083a26a6ddc0b56961dad8cdd18f419b26",
                                "typeString": "literal_string \"Inventory: not a collection\""
                              },
                              "value": "Inventory: not a collection"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4cf1a66cbd2b296ca2a93478debecc083a26a6ddc0b56961dad8cdd18f419b26",
                                "typeString": "literal_string \"Inventory: not a collection\""
                              }
                            ],
                            "id": 1196,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7008:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1203,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7008:95:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1204,
                        "nodeType": "ExpressionStatement",
                        "src": "7008:95:10"
                      },
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 1205,
                            "name": "_creators",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 804,
                            "src": "7120:9:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                              "typeString": "mapping(uint256 => address)"
                            }
                          },
                          "id": 1207,
                          "indexExpression": {
                            "id": 1206,
                            "name": "collectionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1191,
                            "src": "7130:12:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7120:23:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 1195,
                        "id": 1208,
                        "nodeType": "Return",
                        "src": "7113:30:10"
                      }
                    ]
                  },
                  "id": 1210,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_creator",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1192,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1191,
                        "mutability": "mutable",
                        "name": "collectionId",
                        "nodeType": "VariableDeclaration",
                        "scope": 1210,
                        "src": "6936:20:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1190,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6936:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6935:22:10"
                  },
                  "returnParameters": {
                    "id": 1195,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1194,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1210,
                        "src": "6989:7:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1193,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6989:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6988:9:10"
                  },
                  "scope": 1299,
                  "src": "6918:232:10",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1231,
                    "nodeType": "Block",
                    "src": "7662:68:10",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1229,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 1222,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 1220,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1213,
                                  "src": "7680:4:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "id": 1221,
                                  "name": "sender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1215,
                                  "src": "7688:6:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "7680:14:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 1223,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "7679:16:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 1224,
                                "name": "_operators",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 786,
                                "src": "7699:10:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                  "typeString": "mapping(address => mapping(address => bool))"
                                }
                              },
                              "id": 1226,
                              "indexExpression": {
                                "id": 1225,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1213,
                                "src": "7710:4:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7699:16:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 1228,
                            "indexExpression": {
                              "id": 1227,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1215,
                              "src": "7716:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7699:24:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7679:44:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 1219,
                        "id": 1230,
                        "nodeType": "Return",
                        "src": "7672:51:10"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1211,
                    "nodeType": "StructuredDocumentation",
                    "src": "7285:282:10",
                    "text": " Returns whether `sender` is authorised to make a transfer on behalf of `from`.\n @param from The address to check operatibility upon.\n @param sender The sender address.\n @return True if sender is `from` or an operator for `from`, false otherwise."
                  },
                  "id": 1232,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_isOperatable",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1216,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1213,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 1232,
                        "src": "7595:12:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1212,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7595:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1215,
                        "mutability": "mutable",
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 1232,
                        "src": "7609:14:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1214,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7609:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7594:30:10"
                  },
                  "returnParameters": {
                    "id": 1219,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1218,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1232,
                        "src": "7656:4:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1217,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7656:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7655:6:10"
                  },
                  "scope": 1299,
                  "src": "7572:158:10",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1263,
                    "nodeType": "Block",
                    "src": "8360:158:10",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 1259,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 1251,
                                      "name": "_msgSender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 229,
                                      "src": "8422:10:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                        "typeString": "function () view returns (address payable)"
                                      }
                                    },
                                    "id": 1252,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8422:12:10",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 1253,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1235,
                                    "src": "8436:4:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 1254,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1239,
                                    "src": "8442:2:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 1255,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1241,
                                    "src": "8446:5:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 1256,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1243,
                                    "src": "8453:4:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 1248,
                                        "name": "to",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1237,
                                        "src": "8400:2:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 1247,
                                      "name": "IERC1155TokenReceiver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1698,
                                      "src": "8378:21:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$1698_$",
                                        "typeString": "type(contract IERC1155TokenReceiver)"
                                      }
                                    },
                                    "id": 1249,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8378:25:10",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC1155TokenReceiver_$1698",
                                      "typeString": "contract IERC1155TokenReceiver"
                                    }
                                  },
                                  "id": 1250,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "onERC1155Received",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1679,
                                  "src": "8378:43:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                    "typeString": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)"
                                  }
                                },
                                "id": 1257,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8378:80:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 1258,
                                "name": "_ERC1155_RECEIVED",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 774,
                                "src": "8462:17:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "8378:101:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207472616e736665722072656675736564",
                              "id": 1260,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8481:29:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f586869b43ba3901b74c780121b14f86de66ae1e2d38e1ac43de058c29664070",
                                "typeString": "literal_string \"Inventory: transfer refused\""
                              },
                              "value": "Inventory: transfer refused"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f586869b43ba3901b74c780121b14f86de66ae1e2d38e1ac43de058c29664070",
                                "typeString": "literal_string \"Inventory: transfer refused\""
                              }
                            ],
                            "id": 1246,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8370:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1261,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8370:141:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1262,
                        "nodeType": "ExpressionStatement",
                        "src": "8370:141:10"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1233,
                    "nodeType": "StructuredDocumentation",
                    "src": "7736:460:10",
                    "text": " Calls {IERC1155TokenReceiver-onERC1155Received} on a target contract.\n @dev Reverts if `to` is not a contract.\n @dev Reverts if the call to the target fails or is refused.\n @param from Previous token owner.\n @param to New token owner.\n @param id Identifier of the token transferred.\n @param value Amount of token transferred.\n @param data Optional data to send along with the receiver contract call."
                  },
                  "id": 1264,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_callOnERC1155Received",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1244,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1235,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 1264,
                        "src": "8242:12:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1234,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8242:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1237,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 1264,
                        "src": "8264:10:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1236,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8264:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1239,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 1264,
                        "src": "8284:10:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1238,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8284:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1241,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 1264,
                        "src": "8304:13:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1240,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8304:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1243,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 1264,
                        "src": "8327:17:10",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1242,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "8327:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8232:118:10"
                  },
                  "returnParameters": {
                    "id": 1245,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8360:0:10"
                  },
                  "scope": 1299,
                  "src": "8201:317:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1297,
                    "nodeType": "Block",
                    "src": "9186:205:10",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 1293,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 1285,
                                      "name": "_msgSender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 229,
                                      "src": "9266:10:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                        "typeString": "function () view returns (address payable)"
                                      }
                                    },
                                    "id": 1286,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9266:12:10",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 1287,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1267,
                                    "src": "9280:4:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 1288,
                                    "name": "ids",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1272,
                                    "src": "9286:3:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 1289,
                                    "name": "values",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1275,
                                    "src": "9291:6:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 1290,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1277,
                                    "src": "9299:4:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 1282,
                                        "name": "to",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1269,
                                        "src": "9239:2:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 1281,
                                      "name": "IERC1155TokenReceiver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1698,
                                      "src": "9217:21:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$1698_$",
                                        "typeString": "type(contract IERC1155TokenReceiver)"
                                      }
                                    },
                                    "id": 1283,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9217:25:10",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC1155TokenReceiver_$1698",
                                      "typeString": "contract IERC1155TokenReceiver"
                                    }
                                  },
                                  "id": 1284,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "onERC1155BatchReceived",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1697,
                                  "src": "9217:48:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                    "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) external returns (bytes4)"
                                  }
                                },
                                "id": 1291,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9217:87:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 1292,
                                "name": "_ERC1155_BATCH_RECEIVED",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 777,
                                "src": "9308:23:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "9217:114:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207472616e736665722072656675736564",
                              "id": 1294,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9345:29:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f586869b43ba3901b74c780121b14f86de66ae1e2d38e1ac43de058c29664070",
                                "typeString": "literal_string \"Inventory: transfer refused\""
                              },
                              "value": "Inventory: transfer refused"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f586869b43ba3901b74c780121b14f86de66ae1e2d38e1ac43de058c29664070",
                                "typeString": "literal_string \"Inventory: transfer refused\""
                              }
                            ],
                            "id": 1280,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "9196:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1295,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9196:188:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1296,
                        "nodeType": "ExpressionStatement",
                        "src": "9196:188:10"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1265,
                    "nodeType": "StructuredDocumentation",
                    "src": "8524:473:10",
                    "text": " Calls {IERC1155TokenReceiver-onERC1155batchReceived} on a target contract.\n @dev Reverts if `to` is not a contract.\n @dev Reverts if the call to the target fails or is refused.\n @param from Previous tokens owner.\n @param to New tokens owner.\n @param ids Identifiers of the tokens to transfer.\n @param values Amounts of tokens to transfer.\n @param data Optional data to send along with the receiver contract call."
                  },
                  "id": 1298,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_callOnERC1155BatchReceived",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1278,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1267,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 1298,
                        "src": "9048:12:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1266,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9048:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1269,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 1298,
                        "src": "9070:10:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1268,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9070:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1272,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 1298,
                        "src": "9090:20:10",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1270,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "9090:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1271,
                          "nodeType": "ArrayTypeName",
                          "src": "9090:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1275,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 1298,
                        "src": "9120:23:10",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1273,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "9120:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1274,
                          "nodeType": "ArrayTypeName",
                          "src": "9120:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1277,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 1298,
                        "src": "9153:17:10",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1276,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "9153:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9038:138:10"
                  },
                  "returnParameters": {
                    "id": 1279,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9186:0:10"
                  },
                  "scope": 1299,
                  "src": "9002:389:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 1300,
              "src": "1176:8217:10"
            }
          ],
          "src": "33:9361:10"
        },
        "id": 10
      },
      "contracts/token/ERC1155/ERC1155InventoryIdentifiersLib.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155/ERC1155InventoryIdentifiersLib.sol",
          "exportedSymbols": {
            "ERC1155InventoryIdentifiersLib": [
              1381
            ]
          },
          "id": 1382,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1301,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:11"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 1302,
                "nodeType": "StructuredDocumentation",
                "src": "66:497:11",
                "text": " @title ERC1155InventoryIdentifiersLib, a library to introspect inventory identifiers.\n @dev With 0 < N < 256 representing the Non-Fungible Collection mask length, identifiers are represented as follow:\n (a) a Fungible Token:\n     - most significant bit == 0\n (b) a Non-Fungible Collection:\n     - most significant bit == 1\n     - (256-N) least significant bits == 0\n (c) a Non-Fungible Token:\n     - most significant bit == 1\n     - (256-N) least significant bits != 0"
              },
              "fullyImplemented": true,
              "id": 1381,
              "linearizedBaseContracts": [
                1381
              ],
              "name": "ERC1155InventoryIdentifiersLib",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 1307,
                  "mutability": "constant",
                  "name": "_NF_BIT",
                  "nodeType": "VariableDeclaration",
                  "scope": 1381,
                  "src": "711:44:11",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1303,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "711:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1",
                      "typeString": "int_const 5789...(69 digits omitted)...9968"
                    },
                    "id": 1306,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "hexValue": "31",
                      "id": 1304,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "747:1:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<<",
                    "rightExpression": {
                      "hexValue": "323535",
                      "id": 1305,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "752:3:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_255_by_1",
                        "typeString": "int_const 255"
                      },
                      "value": "255"
                    },
                    "src": "747:8:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1",
                      "typeString": "int_const 5789...(69 digits omitted)...9968"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1320,
                    "nodeType": "Block",
                    "src": "828:41:11",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1318,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1316,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 1314,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1309,
                              "src": "845:2:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "id": 1315,
                              "name": "_NF_BIT",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1307,
                              "src": "850:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "845:12:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 1317,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "861:1:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "845:17:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 1313,
                        "id": 1319,
                        "nodeType": "Return",
                        "src": "838:24:11"
                      }
                    ]
                  },
                  "id": 1321,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isFungibleToken",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1310,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1309,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 1321,
                        "src": "787:10:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1308,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "787:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "786:12:11"
                  },
                  "returnParameters": {
                    "id": 1313,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1312,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1321,
                        "src": "822:4:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1311,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "822:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "821:6:11"
                  },
                  "scope": 1381,
                  "src": "762:107:11",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1344,
                    "nodeType": "Block",
                    "src": "974:101:11",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1342,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1334,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1332,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1330,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1323,
                                "src": "991:2:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&",
                              "rightExpression": {
                                "id": 1331,
                                "name": "_NF_BIT",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1307,
                                "src": "996:7:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "991:12:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 1333,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1007:1:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "991:17:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1341,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1339,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1335,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1323,
                                "src": "1012:2:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 1337,
                                    "name": "collectionMaskLength",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1325,
                                    "src": "1042:20:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 1336,
                                  "name": "_getNonFungibleTokenMask",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1380,
                                  "src": "1017:24:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 1338,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1017:46:11",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1012:51:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 1340,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1067:1:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "1012:56:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "991:77:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 1329,
                        "id": 1343,
                        "nodeType": "Return",
                        "src": "984:84:11"
                      }
                    ]
                  },
                  "id": 1345,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isNonFungibleToken",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1326,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1323,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 1345,
                        "src": "903:10:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1322,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "903:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1325,
                        "mutability": "mutable",
                        "name": "collectionMaskLength",
                        "nodeType": "VariableDeclaration",
                        "scope": 1345,
                        "src": "915:28:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1324,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "915:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "902:42:11"
                  },
                  "returnParameters": {
                    "id": 1329,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1328,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1345,
                        "src": "968:4:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1327,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "968:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "967:6:11"
                  },
                  "scope": 1381,
                  "src": "875:200:11",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1361,
                    "nodeType": "Block",
                    "src": "1192:79:11",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1359,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1354,
                            "name": "nftId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1347,
                            "src": "1209:5:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&",
                          "rightExpression": {
                            "id": 1358,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "~",
                            "prefix": true,
                            "src": "1217:47:11",
                            "subExpression": {
                              "arguments": [
                                {
                                  "id": 1356,
                                  "name": "collectionMaskLength",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1349,
                                  "src": "1243:20:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 1355,
                                "name": "_getNonFungibleTokenMask",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1380,
                                "src": "1218:24:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 1357,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1218:46:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1209:55:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 1353,
                        "id": 1360,
                        "nodeType": "Return",
                        "src": "1202:62:11"
                      }
                    ]
                  },
                  "id": 1362,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getNonFungibleCollection",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1350,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1347,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 1362,
                        "src": "1115:13:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1346,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1115:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1349,
                        "mutability": "mutable",
                        "name": "collectionMaskLength",
                        "nodeType": "VariableDeclaration",
                        "scope": 1362,
                        "src": "1130:28:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1348,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1130:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1114:45:11"
                  },
                  "returnParameters": {
                    "id": 1353,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1352,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1362,
                        "src": "1183:7:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1351,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1183:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1182:9:11"
                  },
                  "scope": 1381,
                  "src": "1081:190:11",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1379,
                    "nodeType": "Block",
                    "src": "1372:63:11",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1377,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1374,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "31",
                                  "id": 1369,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1390:1:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<<",
                                "rightExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 1372,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "hexValue": "323536",
                                        "id": 1370,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1396:3:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_256_by_1",
                                          "typeString": "int_const 256"
                                        },
                                        "value": "256"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 1371,
                                        "name": "collectionMaskLength",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1364,
                                        "src": "1402:20:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "1396:26:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 1373,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "1395:28:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1390:33:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 1375,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1389:35:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 1376,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1427:1:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "1389:39:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 1368,
                        "id": 1378,
                        "nodeType": "Return",
                        "src": "1382:46:11"
                      }
                    ]
                  },
                  "id": 1380,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getNonFungibleTokenMask",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1365,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1364,
                        "mutability": "mutable",
                        "name": "collectionMaskLength",
                        "nodeType": "VariableDeclaration",
                        "scope": 1380,
                        "src": "1311:28:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1363,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1311:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1310:30:11"
                  },
                  "returnParameters": {
                    "id": 1368,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1367,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1380,
                        "src": "1363:7:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1366,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1363:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1362:9:11"
                  },
                  "scope": 1381,
                  "src": "1277:158:11",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                }
              ],
              "scope": 1382,
              "src": "564:873:11"
            }
          ],
          "src": "33:1405:11"
        },
        "id": 11
      },
      "contracts/token/ERC1155/interfaces/IERC1155.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155.sol",
          "exportedSymbols": {
            "IERC1155": [
              1496
            ]
          },
          "id": 1497,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1383,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:12"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 1384,
                "nodeType": "StructuredDocumentation",
                "src": "66:187:12",
                "text": " @title ERC1155 Multi Token Standard, basic interface.\n @dev See https://eips.ethereum.org/EIPS/eip-1155\n @dev Note: The ERC-165 identifier for this interface is 0xd9b67a26."
              },
              "fullyImplemented": false,
              "id": 1496,
              "linearizedBaseContracts": [
                1496
              ],
              "name": "IERC1155",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "id": 1396,
                  "name": "TransferSingle",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1395,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1386,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 1396,
                        "src": "300:25:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1385,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "300:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1388,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 1396,
                        "src": "327:21:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1387,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "327:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1390,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 1396,
                        "src": "350:19:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1389,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "350:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1392,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_id",
                        "nodeType": "VariableDeclaration",
                        "scope": 1396,
                        "src": "371:11:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1391,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "371:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1394,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_value",
                        "nodeType": "VariableDeclaration",
                        "scope": 1396,
                        "src": "384:14:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1393,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "384:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "299:100:12"
                  },
                  "src": "279:121:12"
                },
                {
                  "anonymous": false,
                  "id": 1410,
                  "name": "TransferBatch",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1409,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1398,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 1410,
                        "src": "426:25:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1397,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "426:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1400,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 1410,
                        "src": "453:21:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1399,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "453:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1402,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 1410,
                        "src": "476:19:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1401,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "476:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1405,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 1410,
                        "src": "497:14:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1403,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "497:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1404,
                          "nodeType": "ArrayTypeName",
                          "src": "497:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1408,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_values",
                        "nodeType": "VariableDeclaration",
                        "scope": 1410,
                        "src": "513:17:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1406,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "513:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1407,
                          "nodeType": "ArrayTypeName",
                          "src": "513:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "425:106:12"
                  },
                  "src": "406:126:12"
                },
                {
                  "anonymous": false,
                  "id": 1418,
                  "name": "ApprovalForAll",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1417,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1412,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 1418,
                        "src": "559:22:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1411,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "559:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1414,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 1418,
                        "src": "583:25:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1413,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "583:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1416,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_approved",
                        "nodeType": "VariableDeclaration",
                        "scope": 1418,
                        "src": "610:14:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1415,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "610:4:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "558:67:12"
                  },
                  "src": "538:88:12"
                },
                {
                  "anonymous": false,
                  "id": 1424,
                  "name": "URI",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1423,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1420,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_value",
                        "nodeType": "VariableDeclaration",
                        "scope": 1424,
                        "src": "642:13:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1419,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "642:6:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1422,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_id",
                        "nodeType": "VariableDeclaration",
                        "scope": 1424,
                        "src": "657:19:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1421,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "657:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "641:36:12"
                  },
                  "src": "632:46:12"
                },
                {
                  "documentation": {
                    "id": 1425,
                    "nodeType": "StructuredDocumentation",
                    "src": "684:634:12",
                    "text": " Safely transfers some token.\n @dev Reverts if `to` is the zero address.\n @dev Reverts if the sender is not approved.\n @dev Reverts if `from` has an insufficient balance.\n @dev Reverts if `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155received} fails or is refused.\n @dev Emits a `TransferSingle` event.\n @param from Current token owner.\n @param to Address of the new token owner.\n @param id Identifier of the token to transfer.\n @param value Amount of token to transfer.\n @param data Optional data to send along to a receiver contract."
                  },
                  "functionSelector": "f242432a",
                  "id": 1438,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1436,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1427,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 1438,
                        "src": "1358:12:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1426,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1358:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1429,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 1438,
                        "src": "1380:10:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1428,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1380:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1431,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 1438,
                        "src": "1400:10:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1430,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1400:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1433,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 1438,
                        "src": "1420:13:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1432,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1420:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1435,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 1438,
                        "src": "1443:19:12",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1434,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1443:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1348:120:12"
                  },
                  "returnParameters": {
                    "id": 1437,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1477:0:12"
                  },
                  "scope": 1496,
                  "src": "1323:155:12",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1439,
                    "nodeType": "StructuredDocumentation",
                    "src": "1484:734:12",
                    "text": " Safely transfers a batch of tokens.\n @dev Reverts if `to` is the zero address.\n @dev Reverts if `ids` and `values` have different lengths.\n @dev Reverts if the sender is not approved.\n @dev Reverts if `from` has an insufficient balance for any of `ids`.\n @dev Reverts if `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155batchReceived} fails or is refused.\n @dev Emits a `TransferBatch` event.\n @param from Current token owner.\n @param to Address of the new token owner.\n @param ids Identifiers of the tokens to transfer.\n @param values Amounts of tokens to transfer.\n @param data Optional data to send along to a receiver contract."
                  },
                  "functionSelector": "2eb2c2d6",
                  "id": 1454,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeBatchTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1452,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1441,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 1454,
                        "src": "2263:12:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1440,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2263:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1443,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 1454,
                        "src": "2285:10:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1442,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2285:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1446,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 1454,
                        "src": "2305:22:12",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1444,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2305:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1445,
                          "nodeType": "ArrayTypeName",
                          "src": "2305:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1449,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 1454,
                        "src": "2337:25:12",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1447,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2337:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1448,
                          "nodeType": "ArrayTypeName",
                          "src": "2337:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1451,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 1454,
                        "src": "2372:19:12",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1450,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2372:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2253:144:12"
                  },
                  "returnParameters": {
                    "id": 1453,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2406:0:12"
                  },
                  "scope": 1496,
                  "src": "2223:184:12",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1455,
                    "nodeType": "StructuredDocumentation",
                    "src": "2413:255:12",
                    "text": " Retrieves the balance of `id` owned by account `owner`.\n @param owner The account to retrieve the balance of.\n @param id The identifier to retrieve the balance of.\n @return The balance of `id` owned by account `owner`."
                  },
                  "functionSelector": "00fdd58e",
                  "id": 1464,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1460,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1457,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 1464,
                        "src": "2692:13:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1456,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2692:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1459,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 1464,
                        "src": "2707:10:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1458,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2707:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2691:27:12"
                  },
                  "returnParameters": {
                    "id": 1463,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1462,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1464,
                        "src": "2742:7:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1461,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2742:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2741:9:12"
                  },
                  "scope": 1496,
                  "src": "2673:78:12",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1465,
                    "nodeType": "StructuredDocumentation",
                    "src": "2757:342:12",
                    "text": " Retrieves the balances of `ids` owned by accounts `owners`. For each pair:\n @dev Reverts if `owners` and `ids` have different lengths.\n @param owners The addresses of the token holders\n @param ids The identifiers to retrieve the balance of.\n @return The balances of `ids` owned by accounts `owners`."
                  },
                  "functionSelector": "4e1273f4",
                  "id": 1477,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOfBatch",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1472,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1468,
                        "mutability": "mutable",
                        "name": "owners",
                        "nodeType": "VariableDeclaration",
                        "scope": 1477,
                        "src": "3128:25:12",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1466,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3128:7:12",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 1467,
                          "nodeType": "ArrayTypeName",
                          "src": "3128:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1471,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 1477,
                        "src": "3155:22:12",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1469,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3155:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1470,
                          "nodeType": "ArrayTypeName",
                          "src": "3155:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3127:51:12"
                  },
                  "returnParameters": {
                    "id": 1476,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1475,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1477,
                        "src": "3202:16:12",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1473,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3202:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1474,
                          "nodeType": "ArrayTypeName",
                          "src": "3202:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3201:18:12"
                  },
                  "scope": 1496,
                  "src": "3104:116:12",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1478,
                    "nodeType": "StructuredDocumentation",
                    "src": "3226:237:12",
                    "text": " Enables or disables an operator's approval.\n @dev Emits an `ApprovalForAll` event.\n @param operator Address of the operator.\n @param approved True to approve the operator, false to revoke an approval."
                  },
                  "functionSelector": "a22cb465",
                  "id": 1485,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setApprovalForAll",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1483,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1480,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 1485,
                        "src": "3495:16:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1479,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3495:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1482,
                        "mutability": "mutable",
                        "name": "approved",
                        "nodeType": "VariableDeclaration",
                        "scope": 1485,
                        "src": "3513:13:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1481,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3513:4:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3494:33:12"
                  },
                  "returnParameters": {
                    "id": 1484,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3536:0:12"
                  },
                  "scope": 1496,
                  "src": "3468:69:12",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1486,
                    "nodeType": "StructuredDocumentation",
                    "src": "3543:249:12",
                    "text": " Retrieves the approval status of an operator for a given owner.\n @param owner Address of the authorisation giver.\n @param operator Address of the operator.\n @return True if the operator is approved, false if not."
                  },
                  "functionSelector": "e985e9c5",
                  "id": 1495,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isApprovedForAll",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1491,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1488,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 1495,
                        "src": "3823:13:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1487,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3823:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1490,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 1495,
                        "src": "3838:16:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1489,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3838:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3822:33:12"
                  },
                  "returnParameters": {
                    "id": 1494,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1493,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1495,
                        "src": "3879:4:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1492,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3879:4:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3878:6:12"
                  },
                  "scope": 1496,
                  "src": "3797:88:12",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 1497,
              "src": "254:3633:12"
            }
          ],
          "src": "33:3855:12"
        },
        "id": 12
      },
      "contracts/token/ERC1155/interfaces/IERC1155Inventory.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155Inventory.sol",
          "exportedSymbols": {
            "IERC1155": [
              1496
            ],
            "IERC1155Inventory": [
              1599
            ],
            "IERC1155InventoryFunctions": [
              1636
            ]
          },
          "id": 1600,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1498,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:13"
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155.sol",
              "file": "./IERC1155.sol",
              "id": 1500,
              "nodeType": "ImportDirective",
              "scope": 1600,
              "sourceUnit": 1497,
              "src": "66:40:13",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1499,
                    "name": "IERC1155",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:8:13",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155InventoryFunctions.sol",
              "file": "./IERC1155InventoryFunctions.sol",
              "id": 1502,
              "nodeType": "ImportDirective",
              "scope": 1600,
              "sourceUnit": 1637,
              "src": "107:76:13",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1501,
                    "name": "IERC1155InventoryFunctions",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "115:26:13",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 1504,
                    "name": "IERC1155",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1496,
                    "src": "1817:8:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155_$1496",
                      "typeString": "contract IERC1155"
                    }
                  },
                  "id": 1505,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1817:8:13"
                },
                {
                  "baseName": {
                    "id": 1506,
                    "name": "IERC1155InventoryFunctions",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1636,
                    "src": "1827:26:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155InventoryFunctions_$1636",
                      "typeString": "contract IERC1155InventoryFunctions"
                    }
                  },
                  "id": 1507,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1827:26:13"
                }
              ],
              "contractDependencies": [
                1496,
                1636
              ],
              "contractKind": "interface",
              "documentation": {
                "id": 1503,
                "nodeType": "StructuredDocumentation",
                "src": "185:1600:13",
                "text": " @title ERC1155 Multi Token Standard, optional extension: Inventory.\n Interface for Fungible/Non-Fungible Tokens management on an ERC1155 contract.\n This interface rationalizes the co-existence of Fungible and Non-Fungible Tokens\n within the same contract. As several kinds of Fungible Tokens can be managed under\n the Multi-Token standard, we consider that Non-Fungible Tokens can be classified\n under their own specific type. We introduce the concept of Non-Fungible Collection\n and consider the usage of 3 types of identifiers:\n (a) Fungible Token identifiers, each representing a set of Fungible Tokens,\n (b) Non-Fungible Collection identifiers, each representing a set of Non-Fungible Tokens (this is not a token),\n (c) Non-Fungible Token identifiers.\n Identifiers nature\n |       Type                | isFungible  | isCollection | isToken |\n |  Fungible Token           |   true      |     true     |  true   |\n |  Non-Fungible Collection  |   false     |     true     |  false  |\n |  Non-Fungible Token       |   false     |     false    |  true   |\n Identifiers compatibilities\n |       Type                |  transfer  |   balance    |   supply    |  owner  |\n |  Fungible Token           |    OK      |     OK       |     OK      |   NOK   |\n |  Non-Fungible Collection  |    NOK     |     OK       |     OK      |   NOK   |\n |  Non-Fungible Token       |    OK      |   0 or 1     |   0 or 1    |   OK    |\n @dev See https://eips.ethereum.org/EIPS/eip-xxxx\n @dev Note: The ERC-165 identifier for this interface is 0x09ce5c46."
              },
              "fullyImplemented": false,
              "id": 1599,
              "linearizedBaseContracts": [
                1599,
                1636,
                1496
              ],
              "name": "IERC1155Inventory",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 1508,
                    "nodeType": "StructuredDocumentation",
                    "src": "1988:382:13",
                    "text": " Optional event emitted when a collection (Fungible Token or Non-Fungible Collection) is created.\n  This event can be used by a client application to determine which identifiers are meaningful\n  to track through the functions `balanceOf`, `balanceOfBatch` and `totalSupply`.\n @dev This event MUST NOT be emitted twice for the same `collectionId`."
                  },
                  "id": 1514,
                  "name": "CollectionCreated",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1513,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1510,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "collectionId",
                        "nodeType": "VariableDeclaration",
                        "scope": 1514,
                        "src": "2399:28:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1509,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2399:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1512,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "fungible",
                        "nodeType": "VariableDeclaration",
                        "scope": 1514,
                        "src": "2429:21:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1511,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2429:4:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2398:53:13"
                  },
                  "src": "2375:77:13"
                },
                {
                  "baseFunctions": [
                    1621
                  ],
                  "documentation": {
                    "id": 1515,
                    "nodeType": "StructuredDocumentation",
                    "src": "2458:256:13",
                    "text": " Retrieves the owner of a Non-Fungible Token (ERC721-compatible).\n @dev Reverts if `nftId` is owned by the zero address.\n @param nftId Identifier of the token to query.\n @return Address of the current owner of the token."
                  },
                  "functionSelector": "6352211e",
                  "id": 1523,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ownerOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1519,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2765:8:13"
                  },
                  "parameters": {
                    "id": 1518,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1517,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 1523,
                        "src": "2736:13:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1516,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2736:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2735:15:13"
                  },
                  "returnParameters": {
                    "id": 1522,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1521,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1523,
                        "src": "2783:7:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1520,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2783:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2782:9:13"
                  },
                  "scope": 1599,
                  "src": "2719:73:13",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1628
                  ],
                  "documentation": {
                    "id": 1524,
                    "nodeType": "StructuredDocumentation",
                    "src": "2798:290:13",
                    "text": " Introspects whether or not `id` represents a Fungible Token.\n  This function MUST return true even for a Fungible Token which is not-yet created.\n @param id The identifier to query.\n @return bool True if `id` represents aFungible Token, false otherwise."
                  },
                  "functionSelector": "adebf6f2",
                  "id": 1532,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isFungible",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1528,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3139:8:13"
                  },
                  "parameters": {
                    "id": 1527,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1526,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 1532,
                        "src": "3113:10:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1525,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3113:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3112:12:13"
                  },
                  "returnParameters": {
                    "id": 1531,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1530,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1532,
                        "src": "3157:4:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1529,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3157:4:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3156:6:13"
                  },
                  "scope": 1599,
                  "src": "3093:70:13",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1635
                  ],
                  "documentation": {
                    "id": 1533,
                    "nodeType": "StructuredDocumentation",
                    "src": "3169:534:13",
                    "text": " Introspects the Non-Fungible Collection to which `nftId` belongs.\n @dev This function MUST return a value representing a Non-Fungible Collection.\n @dev This function MUST return a value for a non-existing token, and SHOULD NOT be used to check the existence of a Non-Fungible Token.\n @dev Reverts if `nftId` does not represent a Non-Fungible Token.\n @param nftId The token identifier to query the collection of.\n @return The Non-Fungible Collection identifier to which `nftId` belongs."
                  },
                  "functionSelector": "c7778baa",
                  "id": 1541,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "collectionOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1537,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3759:8:13"
                  },
                  "parameters": {
                    "id": 1536,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1535,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 1541,
                        "src": "3730:13:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1534,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3730:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3729:15:13"
                  },
                  "returnParameters": {
                    "id": 1540,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1539,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1541,
                        "src": "3777:7:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1538,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3777:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3776:9:13"
                  },
                  "scope": 1599,
                  "src": "3708:78:13",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1464
                  ],
                  "documentation": {
                    "id": 1542,
                    "nodeType": "StructuredDocumentation",
                    "src": "3921:420:13",
                    "text": " Retrieves the balance of `id` owned by account `owner`.\n @param owner The account to retrieve the balance of.\n @param id The identifier to retrieve the balance of.\n @return\n  If `id` represents a collection (Fungible Token or Non-Fungible Collection), the balance for this collection.\n  If `id` represents a Non-Fungible Token, 1 if the token is owned by `owner`, else 0."
                  },
                  "functionSelector": "00fdd58e",
                  "id": 1552,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1548,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4406:8:13"
                  },
                  "parameters": {
                    "id": 1547,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1544,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 1552,
                        "src": "4365:13:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1543,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4365:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1546,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 1552,
                        "src": "4380:10:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1545,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4380:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4364:27:13"
                  },
                  "returnParameters": {
                    "id": 1551,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1550,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1552,
                        "src": "4424:7:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1549,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4424:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4423:9:13"
                  },
                  "scope": 1599,
                  "src": "4346:87:13",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1477
                  ],
                  "documentation": {
                    "id": 1553,
                    "nodeType": "StructuredDocumentation",
                    "src": "4439:553:13",
                    "text": " Retrieves the balances of `ids` owned by accounts `owners`.\n @dev Reverts if `owners` and `ids` have different lengths.\n @param owners The accounts to retrieve the balances of.\n @param ids The identifiers to retrieve the balances of.\n @return An array of elements such as for each pair `id`/`owner`:\n  If `id` represents a collection (Fungible Token or Non-Fungible Collection), the balance for this collection.\n  If `id` represents a Non-Fungible Token, 1 if the token is owned by `owner`, else 0."
                  },
                  "functionSelector": "4e1273f4",
                  "id": 1566,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOfBatch",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1561,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5086:8:13"
                  },
                  "parameters": {
                    "id": 1560,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1556,
                        "mutability": "mutable",
                        "name": "owners",
                        "nodeType": "VariableDeclaration",
                        "scope": 1566,
                        "src": "5021:25:13",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1554,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5021:7:13",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 1555,
                          "nodeType": "ArrayTypeName",
                          "src": "5021:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1559,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 1566,
                        "src": "5048:22:13",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1557,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5048:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1558,
                          "nodeType": "ArrayTypeName",
                          "src": "5048:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5020:51:13"
                  },
                  "returnParameters": {
                    "id": 1565,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1564,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1566,
                        "src": "5104:16:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1562,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5104:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1563,
                          "nodeType": "ArrayTypeName",
                          "src": "5104:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5103:18:13"
                  },
                  "scope": 1599,
                  "src": "4997:125:13",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1438
                  ],
                  "documentation": {
                    "id": 1567,
                    "nodeType": "StructuredDocumentation",
                    "src": "5128:977:13",
                    "text": " Safely transfers some token.\n @dev Reverts if `to` is the zero address.\n @dev Reverts if the sender is not approved.\n @dev Reverts if `id` does not represent a token.\n @dev Reverts if `id` represents a Non-Fungible Token and `value` is not 1.\n @dev Reverts if `id` represents a Non-Fungible Token and is not owned by `from`.\n @dev Reverts if `id` represents a Fungible Token and `value` is 0.\n @dev Reverts if `id` represents a Fungible Token and `from` has an insufficient balance.\n @dev Reverts if `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155received} fails or is refused.\n @dev Emits an {IERC1155-TransferSingle} event.\n @param from Current token owner.\n @param to Address of the new token owner.\n @param id Identifier of the token to transfer.\n @param value Amount of token to transfer.\n @param data Optional data to pass to the receiver contract."
                  },
                  "functionSelector": "f242432a",
                  "id": 1581,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1579,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6265:8:13"
                  },
                  "parameters": {
                    "id": 1578,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1569,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 1581,
                        "src": "6145:12:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1568,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6145:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1571,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 1581,
                        "src": "6167:10:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1570,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6167:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1573,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 1581,
                        "src": "6187:10:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1572,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6187:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1575,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 1581,
                        "src": "6207:13:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1574,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6207:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1577,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 1581,
                        "src": "6230:19:13",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1576,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6230:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6135:120:13"
                  },
                  "returnParameters": {
                    "id": 1580,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6273:0:13"
                  },
                  "scope": 1599,
                  "src": "6110:164:13",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1454
                  ],
                  "documentation": {
                    "id": 1582,
                    "nodeType": "StructuredDocumentation",
                    "src": "6280:1168:13",
                    "text": " @notice this documentation overrides its {IERC1155-safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)}.\n Safely transfers a batch of tokens.\n @dev Reverts if `to` is the zero address.\n @dev Reverts if the sender is not approved.\n @dev Reverts if one of `ids` does not represent a token.\n @dev Reverts if one of `ids` represents a Non-Fungible Token and `value` is not 1.\n @dev Reverts if one of `ids` represents a Non-Fungible Token and is not owned by `from`.\n @dev Reverts if one of `ids` represents a Fungible Token and `value` is 0.\n @dev Reverts if one of `ids` represents a Fungible Token and `from` has an insufficient balance.\n @dev Reverts if one of `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155batchReceived} fails or is refused.\n @dev Emits an {IERC1155-TransferBatch} event.\n @param from Current tokens owner.\n @param to Address of the new tokens owner.\n @param ids Identifiers of the tokens to transfer.\n @param values Amounts of tokens to transfer.\n @param data Optional data to pass to the receiver contract."
                  },
                  "functionSelector": "2eb2c2d6",
                  "id": 1598,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeBatchTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1596,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "7637:8:13"
                  },
                  "parameters": {
                    "id": 1595,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1584,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 1598,
                        "src": "7493:12:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1583,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7493:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1586,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 1598,
                        "src": "7515:10:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1585,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7515:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1589,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 1598,
                        "src": "7535:22:13",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1587,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7535:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1588,
                          "nodeType": "ArrayTypeName",
                          "src": "7535:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1592,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 1598,
                        "src": "7567:25:13",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1590,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7567:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1591,
                          "nodeType": "ArrayTypeName",
                          "src": "7567:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1594,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 1598,
                        "src": "7602:19:13",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1593,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7602:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7483:144:13"
                  },
                  "returnParameters": {
                    "id": 1597,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7645:0:13"
                  },
                  "scope": 1599,
                  "src": "7453:193:13",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 1600,
              "src": "1786:5862:13"
            }
          ],
          "src": "33:7616:13"
        },
        "id": 13
      },
      "contracts/token/ERC1155/interfaces/IERC1155InventoryCreator.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155InventoryCreator.sol",
          "exportedSymbols": {
            "IERC1155InventoryCreator": [
              1611
            ]
          },
          "id": 1612,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1601,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:14"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 1602,
                "nodeType": "StructuredDocumentation",
                "src": "66:188:14",
                "text": " @title ERC1155 Inventory, optional extension: Creator.\n @dev See https://eips.ethereum.org/EIPS/eip-1155\n @dev Note: The ERC-165 identifier for this interface is 0x510b5158."
              },
              "fullyImplemented": false,
              "id": 1611,
              "linearizedBaseContracts": [
                1611
              ],
              "name": "IERC1155InventoryCreator",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 1603,
                    "nodeType": "StructuredDocumentation",
                    "src": "296:347:14",
                    "text": " Returns the creator of a collection, or the zero address if the collection has not been created.\n @dev Reverts if `collectionId` does not represent a collection.\n @param collectionId Identifier of the collection.\n @return The creator of a collection, or the zero address if the collection has not been created."
                  },
                  "functionSelector": "510b5158",
                  "id": 1610,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "creator",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1606,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1605,
                        "mutability": "mutable",
                        "name": "collectionId",
                        "nodeType": "VariableDeclaration",
                        "scope": 1610,
                        "src": "665:20:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1604,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "665:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "664:22:14"
                  },
                  "returnParameters": {
                    "id": 1609,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1608,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1610,
                        "src": "710:7:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1607,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "710:7:14",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "709:9:14"
                  },
                  "scope": 1611,
                  "src": "648:71:14",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 1612,
              "src": "255:466:14"
            }
          ],
          "src": "33:689:14"
        },
        "id": 14
      },
      "contracts/token/ERC1155/interfaces/IERC1155InventoryFunctions.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155InventoryFunctions.sol",
          "exportedSymbols": {
            "IERC1155InventoryFunctions": [
              1636
            ]
          },
          "id": 1637,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1613,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:15"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 1614,
                "nodeType": "StructuredDocumentation",
                "src": "66:282:15",
                "text": " @title ERC1155 Multi Token Standard, optional extension: Inventory.\n Interface for Fungible/Non-Fungible Tokens management on an ERC1155 contract.\n @dev See https://eips.ethereum.org/EIPS/eip-xxxx\n @dev Note: The ERC-165 identifier for this interface is 0x09ce5c46."
              },
              "fullyImplemented": false,
              "id": 1636,
              "linearizedBaseContracts": [
                1636
              ],
              "name": "IERC1155InventoryFunctions",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "6352211e",
                  "id": 1621,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ownerOf",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1617,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1616,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 1621,
                        "src": "409:13:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1615,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "409:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "408:15:15"
                  },
                  "returnParameters": {
                    "id": 1620,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1619,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1621,
                        "src": "447:7:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1618,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "447:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "446:9:15"
                  },
                  "scope": 1636,
                  "src": "392:64:15",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "adebf6f2",
                  "id": 1628,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isFungible",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1624,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1623,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 1628,
                        "src": "482:10:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1622,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "482:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "481:12:15"
                  },
                  "returnParameters": {
                    "id": 1627,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1626,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1628,
                        "src": "517:4:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1625,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "517:4:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "516:6:15"
                  },
                  "scope": 1636,
                  "src": "462:61:15",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "c7778baa",
                  "id": 1635,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "collectionOf",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1631,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1630,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 1635,
                        "src": "551:13:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1629,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "551:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "550:15:15"
                  },
                  "returnParameters": {
                    "id": 1634,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1633,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1635,
                        "src": "589:7:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1632,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "589:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "588:9:15"
                  },
                  "scope": 1636,
                  "src": "529:69:15",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 1637,
              "src": "349:251:15"
            }
          ],
          "src": "33:568:15"
        },
        "id": 15
      },
      "contracts/token/ERC1155/interfaces/IERC1155InventoryTotalSupply.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155InventoryTotalSupply.sol",
          "exportedSymbols": {
            "IERC1155InventoryTotalSupply": [
              1648
            ]
          },
          "id": 1649,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1638,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:16"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 1639,
                "nodeType": "StructuredDocumentation",
                "src": "66:193:16",
                "text": " @title ERC1155 Inventory, optional extension: Total Supply.\n @dev See https://eips.ethereum.org/EIPS/eip-xxxx\n @dev Note: The ERC-165 identifier for this interface is 0xbd85b039."
              },
              "fullyImplemented": false,
              "id": 1648,
              "linearizedBaseContracts": [
                1648
              ],
              "name": "IERC1155InventoryTotalSupply",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 1640,
                    "nodeType": "StructuredDocumentation",
                    "src": "305:341:16",
                    "text": " Retrieves the total supply of `id`.\n @param id The identifier for which to retrieve the supply of.\n @return\n  If `id` represents a collection (Fungible Token or Non-Fungible Collection), the total supply for this collection.\n  If `id` represents a Non-Fungible Token, 1 if the token exists, else 0."
                  },
                  "functionSelector": "bd85b039",
                  "id": 1647,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1643,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1642,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 1647,
                        "src": "672:10:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1641,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "672:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "671:12:16"
                  },
                  "returnParameters": {
                    "id": 1646,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1645,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1647,
                        "src": "707:7:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1644,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "707:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "706:9:16"
                  },
                  "scope": 1648,
                  "src": "651:65:16",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 1649,
              "src": "260:458:16"
            }
          ],
          "src": "33:686:16"
        },
        "id": 16
      },
      "contracts/token/ERC1155/interfaces/IERC1155MetadataURI.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155MetadataURI.sol",
          "exportedSymbols": {
            "IERC1155MetadataURI": [
              1660
            ]
          },
          "id": 1661,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1650,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:17"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 1651,
                "nodeType": "StructuredDocumentation",
                "src": "66:204:17",
                "text": " @title ERC1155 Multi Token Standard, optional extension: Metadata URI.\n @dev See https://eips.ethereum.org/EIPS/eip-1155\n @dev Note: The ERC-165 identifier for this interface is 0x0e89341c."
              },
              "fullyImplemented": false,
              "id": 1660,
              "linearizedBaseContracts": [
                1660
              ],
              "name": "IERC1155MetadataURI",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 1652,
                    "nodeType": "StructuredDocumentation",
                    "src": "307:646:17",
                    "text": " @notice A distinct Uniform Resource Identifier (URI) for a given token.\n @dev URIs are defined in RFC 3986.\n @dev The URI MUST point to a JSON file that conforms to the \"ERC1155 Metadata URI JSON Schema\".\n @dev The uri function SHOULD be used to retrieve values if no event was emitted.\n @dev The uri function MUST return the same value as the latest event for an _id if it was emitted.\n @dev The uri function MUST NOT be used to check for the existence of a token as it is possible for\n  an implementation to return a valid string even if the token does not exist.\n @return URI string"
                  },
                  "functionSelector": "0e89341c",
                  "id": 1659,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "uri",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1655,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1654,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 1659,
                        "src": "971:10:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1653,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "971:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "970:12:17"
                  },
                  "returnParameters": {
                    "id": 1658,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1657,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1659,
                        "src": "1006:13:17",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1656,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1006:6:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1005:15:17"
                  },
                  "scope": 1660,
                  "src": "958:63:17",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 1661,
              "src": "271:752:17"
            }
          ],
          "src": "33:991:17"
        },
        "id": 17
      },
      "contracts/token/ERC1155/interfaces/IERC1155TokenReceiver.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155TokenReceiver.sol",
          "exportedSymbols": {
            "IERC1155TokenReceiver": [
              1698
            ]
          },
          "id": 1699,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1662,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:18"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 1663,
                "nodeType": "StructuredDocumentation",
                "src": "66:279:18",
                "text": " @title ERC1155 Multi Token Standard, Tokens Receiver.\n Interface for any contract that wants to support transfers from ERC1155 asset contracts.\n @dev See https://eips.ethereum.org/EIPS/eip-1155\n @dev Note: The ERC-165 identifier for this interface is 0x4e2312e0."
              },
              "fullyImplemented": false,
              "id": 1698,
              "linearizedBaseContracts": [
                1698
              ],
              "name": "IERC1155TokenReceiver",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 1664,
                    "nodeType": "StructuredDocumentation",
                    "src": "384:963:18",
                    "text": " @notice Handle the receipt of a single ERC1155 token type.\n An ERC1155 contract MUST call this function on a recipient contract, at the end of a `safeTransferFrom` after the balance update.\n This function MUST return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n  (i.e. 0xf23a6e61) to accept the transfer.\n Return of any other value than the prescribed keccak256 generated value MUST result in the transaction being reverted by the caller.\n @param operator  The address which initiated the transfer (i.e. msg.sender)\n @param from      The address which previously owned the token\n @param id        The ID of the token being transferred\n @param value     The amount of tokens being transferred\n @param data      Additional data with no specified format\n @return bytes4   `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`"
                  },
                  "functionSelector": "f23a6e61",
                  "id": 1679,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC1155Received",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1675,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1666,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 1679,
                        "src": "1388:16:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1665,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1388:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1668,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 1679,
                        "src": "1414:12:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1667,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1414:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1670,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 1679,
                        "src": "1436:10:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1669,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1436:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1672,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 1679,
                        "src": "1456:13:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1671,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1456:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1674,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 1679,
                        "src": "1479:19:18",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1673,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1479:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1378:126:18"
                  },
                  "returnParameters": {
                    "id": 1678,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1677,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1679,
                        "src": "1523:6:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 1676,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1523:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1522:8:18"
                  },
                  "scope": 1698,
                  "src": "1352:179:18",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1680,
                    "nodeType": "StructuredDocumentation",
                    "src": "1537:1124:18",
                    "text": " @notice Handle the receipt of multiple ERC1155 token types.\n An ERC1155 contract MUST call this function on a recipient contract, at the end of a `safeBatchTransferFrom` after the balance updates.\n This function MUST return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n  (i.e. 0xbc197c81) if to accept the transfer(s).\n Return of any other value than the prescribed keccak256 generated value MUST result in the transaction being reverted by the caller.\n @param operator  The address which initiated the batch transfer (i.e. msg.sender)\n @param from      The address which previously owned the token\n @param ids       An array containing ids of each token being transferred (order and length must match _values array)\n @param values    An array containing amounts of each token being transferred (order and length must match _ids array)\n @param data      Additional data with no specified format\n @return          `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`"
                  },
                  "functionSelector": "bc197c81",
                  "id": 1697,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC1155BatchReceived",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1693,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1682,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 1697,
                        "src": "2707:16:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1681,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2707:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1684,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 1697,
                        "src": "2733:12:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1683,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2733:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1687,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 1697,
                        "src": "2755:22:18",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1685,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2755:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1686,
                          "nodeType": "ArrayTypeName",
                          "src": "2755:9:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1690,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 1697,
                        "src": "2787:25:18",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1688,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2787:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1689,
                          "nodeType": "ArrayTypeName",
                          "src": "2787:9:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1692,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 1697,
                        "src": "2822:19:18",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1691,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2822:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2697:150:18"
                  },
                  "returnParameters": {
                    "id": 1696,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1695,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1697,
                        "src": "2866:6:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 1694,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "2866:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2865:8:18"
                  },
                  "scope": 1698,
                  "src": "2666:208:18",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 1699,
              "src": "346:2530:18"
            }
          ],
          "src": "33:2844:18"
        },
        "id": 18
      },
      "contracts/token/ERC1155721/ERC1155721Inventory.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155721/ERC1155721Inventory.sol",
          "exportedSymbols": {
            "AddressIsContract": [
              589
            ],
            "ERC1155721Inventory": [
              3977
            ],
            "ERC1155InventoryBase": [
              1299
            ],
            "ERC1155InventoryIdentifiersLib": [
              1381
            ],
            "IERC1155721Inventory": [
              4768
            ],
            "IERC1155Inventory": [
              1599
            ],
            "IERC1155MetadataURI": [
              1660
            ],
            "IERC1155TokenReceiver": [
              1698
            ],
            "IERC165": [
              218
            ],
            "IERC721": [
              5285
            ],
            "IERC721BatchTransfer": [
              5300
            ],
            "IERC721Metadata": [
              5324
            ],
            "IERC721Receiver": [
              5342
            ]
          },
          "id": 3978,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1700,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:19"
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/types/AddressIsContract.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/utils/types/AddressIsContract.sol",
              "id": 1702,
              "nodeType": "ImportDirective",
              "scope": 3978,
              "sourceUnit": 590,
              "src": "66:111:19",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1701,
                    "name": "AddressIsContract",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:17:19",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/ERC1155InventoryIdentifiersLib.sol",
              "file": "./../ERC1155/ERC1155InventoryIdentifiersLib.sol",
              "id": 1704,
              "nodeType": "ImportDirective",
              "scope": 3978,
              "sourceUnit": 1382,
              "src": "178:95:19",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1703,
                    "name": "ERC1155InventoryIdentifiersLib",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "186:30:19",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "id": 1706,
              "nodeType": "ImportDirective",
              "scope": 3978,
              "sourceUnit": 219,
              "src": "274:93:19",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1705,
                    "name": "IERC165",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "282:7:19",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/interfaces/IERC721.sol",
              "file": "./../ERC721/interfaces/IERC721.sol",
              "id": 1708,
              "nodeType": "ImportDirective",
              "scope": 3978,
              "sourceUnit": 5286,
              "src": "368:59:19",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1707,
                    "name": "IERC721",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "376:7:19",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/interfaces/IERC721Metadata.sol",
              "file": "./../ERC721/interfaces/IERC721Metadata.sol",
              "id": 1710,
              "nodeType": "ImportDirective",
              "scope": 3978,
              "sourceUnit": 5325,
              "src": "428:75:19",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1709,
                    "name": "IERC721Metadata",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "436:15:19",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/interfaces/IERC721BatchTransfer.sol",
              "file": "./../ERC721/interfaces/IERC721BatchTransfer.sol",
              "id": 1712,
              "nodeType": "ImportDirective",
              "scope": 3978,
              "sourceUnit": 5301,
              "src": "504:85:19",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1711,
                    "name": "IERC721BatchTransfer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "512:20:19",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/interfaces/IERC721Receiver.sol",
              "file": "./../ERC721/interfaces/IERC721Receiver.sol",
              "id": 1714,
              "nodeType": "ImportDirective",
              "scope": 3978,
              "sourceUnit": 5343,
              "src": "590:75:19",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1713,
                    "name": "IERC721Receiver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "598:15:19",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155MetadataURI.sol",
              "file": "./../ERC1155/interfaces/IERC1155MetadataURI.sol",
              "id": 1716,
              "nodeType": "ImportDirective",
              "scope": 3978,
              "sourceUnit": 1661,
              "src": "666:84:19",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1715,
                    "name": "IERC1155MetadataURI",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "674:19:19",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155TokenReceiver.sol",
              "file": "./../ERC1155/interfaces/IERC1155TokenReceiver.sol",
              "id": 1718,
              "nodeType": "ImportDirective",
              "scope": 3978,
              "sourceUnit": 1699,
              "src": "751:88:19",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1717,
                    "name": "IERC1155TokenReceiver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "759:21:19",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155Inventory.sol",
              "file": "./../ERC1155/interfaces/IERC1155Inventory.sol",
              "id": 1720,
              "nodeType": "ImportDirective",
              "scope": 3978,
              "sourceUnit": 1600,
              "src": "840:80:19",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1719,
                    "name": "IERC1155Inventory",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "848:17:19",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155721/interfaces/IERC1155721Inventory.sol",
              "file": "./interfaces/IERC1155721Inventory.sol",
              "id": 1722,
              "nodeType": "ImportDirective",
              "scope": 3978,
              "sourceUnit": 4769,
              "src": "921:75:19",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1721,
                    "name": "IERC1155721Inventory",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "929:20:19",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/ERC1155InventoryBase.sol",
              "file": "./../ERC1155/ERC1155InventoryBase.sol",
              "id": 1724,
              "nodeType": "ImportDirective",
              "scope": 3978,
              "sourceUnit": 1300,
              "src": "997:75:19",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1723,
                    "name": "ERC1155InventoryBase",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "1005:20:19",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 1726,
                    "name": "IERC1155721Inventory",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4768,
                    "src": "1342:20:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155721Inventory_$4768",
                      "typeString": "contract IERC1155721Inventory"
                    }
                  },
                  "id": 1727,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1342:20:19"
                },
                {
                  "baseName": {
                    "id": 1728,
                    "name": "IERC721Metadata",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5324,
                    "src": "1364:15:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC721Metadata_$5324",
                      "typeString": "contract IERC721Metadata"
                    }
                  },
                  "id": 1729,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1364:15:19"
                },
                {
                  "baseName": {
                    "id": 1730,
                    "name": "ERC1155InventoryBase",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1299,
                    "src": "1381:20:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155InventoryBase_$1299",
                      "typeString": "contract ERC1155InventoryBase"
                    }
                  },
                  "id": 1731,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1381:20:19"
                }
              ],
              "contractDependencies": [
                218,
                239,
                1299,
                1496,
                1599,
                1636,
                1648,
                1660,
                4768,
                5285,
                5300,
                5324
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 1725,
                "nodeType": "StructuredDocumentation",
                "src": "1074:226:19",
                "text": " @title ERC1155721Inventory, an ERC1155Inventory with additional support for ERC721.\n @dev The function `uri(uint256)` needs to be implemented by a child contract, for example with the help of `NFTBaseMetadataURI`."
              },
              "fullyImplemented": false,
              "id": 3977,
              "linearizedBaseContracts": [
                3977,
                1299,
                1648,
                1660,
                5324,
                4768,
                5300,
                5285,
                1599,
                1636,
                1496,
                218,
                239
              ],
              "name": "ERC1155721Inventory",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 1734,
                  "libraryName": {
                    "id": 1732,
                    "name": "ERC1155InventoryIdentifiersLib",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1381,
                    "src": "1414:30:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155InventoryIdentifiersLib_$1381",
                      "typeString": "library ERC1155InventoryIdentifiersLib"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1408:49:19",
                  "typeName": {
                    "id": 1733,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1449:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 1737,
                  "libraryName": {
                    "id": 1735,
                    "name": "AddressIsContract",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 589,
                    "src": "1468:17:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AddressIsContract_$589",
                      "typeString": "library AddressIsContract"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1462:36:19",
                  "typeName": {
                    "id": 1736,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1490:7:19",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                },
                {
                  "constant": true,
                  "id": 1742,
                  "mutability": "constant",
                  "name": "_APPROVAL_BIT_TOKEN_OWNER_",
                  "nodeType": "VariableDeclaration",
                  "scope": 3977,
                  "src": "1504:63:19",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1738,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1504:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_rational_1461501637330902918203684832716283019655932542976_by_1",
                      "typeString": "int_const 1461...(41 digits omitted)...2976"
                    },
                    "id": 1741,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "hexValue": "31",
                      "id": 1739,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1559:1:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<<",
                    "rightExpression": {
                      "hexValue": "313630",
                      "id": 1740,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1564:3:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_160_by_1",
                        "typeString": "int_const 160"
                      },
                      "value": "160"
                    },
                    "src": "1559:8:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1461501637330902918203684832716283019655932542976_by_1",
                      "typeString": "int_const 1461...(41 digits omitted)...2976"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1744,
                  "mutability": "mutable",
                  "name": "_name",
                  "nodeType": "VariableDeclaration",
                  "scope": 3977,
                  "src": "1574:21:19",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1743,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1574:6:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1746,
                  "mutability": "mutable",
                  "name": "_symbol",
                  "nodeType": "VariableDeclaration",
                  "scope": 3977,
                  "src": "1601:23:19",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1745,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1601:6:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1750,
                  "mutability": "mutable",
                  "name": "_nftBalances",
                  "nodeType": "VariableDeclaration",
                  "scope": 3977,
                  "src": "1662:49:19",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 1749,
                    "keyType": {
                      "id": 1747,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1670:7:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1662:27:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 1748,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1681:7:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1754,
                  "mutability": "mutable",
                  "name": "_nftApprovals",
                  "nodeType": "VariableDeclaration",
                  "scope": 3977,
                  "src": "1747:50:19",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                    "typeString": "mapping(uint256 => address)"
                  },
                  "typeName": {
                    "id": 1753,
                    "keyType": {
                      "id": 1751,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1755:7:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1747:27:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                      "typeString": "mapping(uint256 => address)"
                    },
                    "valueType": {
                      "id": 1752,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1766:7:19",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1774,
                    "nodeType": "Block",
                    "src": "1963:57:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 1768,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1766,
                            "name": "_name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1744,
                            "src": "1973:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 1767,
                            "name": "name_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1756,
                            "src": "1981:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "1973:13:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 1769,
                        "nodeType": "ExpressionStatement",
                        "src": "1973:13:19"
                      },
                      {
                        "expression": {
                          "id": 1772,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1770,
                            "name": "_symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1746,
                            "src": "1996:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 1771,
                            "name": "symbol_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1758,
                            "src": "2006:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "1996:17:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 1773,
                        "nodeType": "ExpressionStatement",
                        "src": "1996:17:19"
                      }
                    ]
                  },
                  "id": 1775,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 1763,
                          "name": "collectionMaskLength",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1760,
                          "src": "1941:20:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1764,
                      "modifierName": {
                        "id": 1762,
                        "name": "ERC1155InventoryBase",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1299,
                        "src": "1920:20:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC1155InventoryBase_$1299_$",
                          "typeString": "type(contract ERC1155InventoryBase)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1920:42:19"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1761,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1756,
                        "mutability": "mutable",
                        "name": "name_",
                        "nodeType": "VariableDeclaration",
                        "scope": 1775,
                        "src": "1825:19:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1755,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1825:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1758,
                        "mutability": "mutable",
                        "name": "symbol_",
                        "nodeType": "VariableDeclaration",
                        "scope": 1775,
                        "src": "1854:21:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1757,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1854:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1760,
                        "mutability": "mutable",
                        "name": "collectionMaskLength",
                        "nodeType": "VariableDeclaration",
                        "scope": 1775,
                        "src": "1885:28:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1759,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1885:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1815:104:19"
                  },
                  "returnParameters": {
                    "id": 1765,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1963:0:19"
                  },
                  "scope": 3977,
                  "src": "1804:216:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    870
                  ],
                  "body": {
                    "id": 1810,
                    "nodeType": "Block",
                    "src": "2274:261:19",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1808,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 1803,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 1796,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                "id": 1789,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 1784,
                                  "name": "interfaceId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1778,
                                  "src": "2303:11:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 1786,
                                        "name": "IERC721",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5285,
                                        "src": "2323:7:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IERC721_$5285_$",
                                          "typeString": "type(contract IERC721)"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_type$_t_contract$_IERC721_$5285_$",
                                          "typeString": "type(contract IERC721)"
                                        }
                                      ],
                                      "id": 1785,
                                      "name": "type",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -27,
                                      "src": "2318:4:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 1787,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2318:13:19",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721_$5285",
                                      "typeString": "type(contract IERC721)"
                                    }
                                  },
                                  "id": 1788,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "interfaceId",
                                  "nodeType": "MemberAccess",
                                  "src": "2318:25:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "2303:40:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                "id": 1795,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 1790,
                                  "name": "interfaceId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1778,
                                  "src": "2359:11:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 1792,
                                        "name": "IERC721Metadata",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5324,
                                        "src": "2379:15:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$5324_$",
                                          "typeString": "type(contract IERC721Metadata)"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$5324_$",
                                          "typeString": "type(contract IERC721Metadata)"
                                        }
                                      ],
                                      "id": 1791,
                                      "name": "type",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -27,
                                      "src": "2374:4:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 1793,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2374:21:19",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721Metadata_$5324",
                                      "typeString": "type(contract IERC721Metadata)"
                                    }
                                  },
                                  "id": 1794,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "interfaceId",
                                  "nodeType": "MemberAccess",
                                  "src": "2374:33:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "2359:48:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2303:104:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 1802,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1797,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1778,
                                "src": "2423:11:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 1799,
                                      "name": "IERC721BatchTransfer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5300,
                                      "src": "2443:20:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC721BatchTransfer_$5300_$",
                                        "typeString": "type(contract IERC721BatchTransfer)"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_contract$_IERC721BatchTransfer_$5300_$",
                                        "typeString": "type(contract IERC721BatchTransfer)"
                                      }
                                    ],
                                    "id": 1798,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -27,
                                    "src": "2438:4:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 1800,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2438:26:19",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721BatchTransfer_$5300",
                                    "typeString": "type(contract IERC721BatchTransfer)"
                                  }
                                },
                                "id": 1801,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "interfaceId",
                                "nodeType": "MemberAccess",
                                "src": "2438:38:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "2423:53:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "2303:173:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 1806,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1778,
                                "src": "2516:11:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 1804,
                                "name": "super",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -25,
                                "src": "2492:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_super$_ERC1155721Inventory_$3977",
                                  "typeString": "contract super ERC1155721Inventory"
                                }
                              },
                              "id": 1805,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 870,
                              "src": "2492:23:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 1807,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2492:36:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "2303:225:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 1783,
                        "id": 1809,
                        "nodeType": "Return",
                        "src": "2284:244:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1776,
                    "nodeType": "StructuredDocumentation",
                    "src": "2155:23:19",
                    "text": "@inheritdoc IERC165"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 1811,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1780,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2250:8:19"
                  },
                  "parameters": {
                    "id": 1779,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1778,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nodeType": "VariableDeclaration",
                        "scope": 1811,
                        "src": "2210:18:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 1777,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "2210:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2209:20:19"
                  },
                  "returnParameters": {
                    "id": 1783,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1782,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1811,
                        "src": "2268:4:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1781,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2268:4:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2267:6:19"
                  },
                  "scope": 3977,
                  "src": "2183:352:19",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    5309
                  ],
                  "body": {
                    "id": 1820,
                    "nodeType": "Block",
                    "src": "2775:29:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 1818,
                          "name": "_name",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1744,
                          "src": "2792:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 1817,
                        "id": 1819,
                        "nodeType": "Return",
                        "src": "2785:12:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1812,
                    "nodeType": "StructuredDocumentation",
                    "src": "2670:31:19",
                    "text": "@inheritdoc IERC721Metadata"
                  },
                  "functionSelector": "06fdde03",
                  "id": 1821,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "name",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1814,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2742:8:19"
                  },
                  "parameters": {
                    "id": 1813,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2719:2:19"
                  },
                  "returnParameters": {
                    "id": 1817,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1816,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1821,
                        "src": "2760:13:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1815,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2760:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2759:15:19"
                  },
                  "scope": 3977,
                  "src": "2706:98:19",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    5315
                  ],
                  "body": {
                    "id": 1830,
                    "nodeType": "Block",
                    "src": "2917:31:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 1828,
                          "name": "_symbol",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1746,
                          "src": "2934:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 1827,
                        "id": 1829,
                        "nodeType": "Return",
                        "src": "2927:14:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1822,
                    "nodeType": "StructuredDocumentation",
                    "src": "2810:31:19",
                    "text": "@inheritdoc IERC721Metadata"
                  },
                  "functionSelector": "95d89b41",
                  "id": 1831,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "symbol",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1824,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2884:8:19"
                  },
                  "parameters": {
                    "id": 1823,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2861:2:19"
                  },
                  "returnParameters": {
                    "id": 1827,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1826,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1831,
                        "src": "2902:13:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1825,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2902:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2901:15:19"
                  },
                  "scope": 3977,
                  "src": "2846:102:19",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    5323
                  ],
                  "body": {
                    "id": 1862,
                    "nodeType": "Block",
                    "src": "3078:130:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              "id": 1854,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "baseExpression": {
                                          "id": 1845,
                                          "name": "_owners",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 800,
                                          "src": "3112:7:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                            "typeString": "mapping(uint256 => uint256)"
                                          }
                                        },
                                        "id": 1847,
                                        "indexExpression": {
                                          "id": 1846,
                                          "name": "nftId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1834,
                                          "src": "3120:5:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "3112:14:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 1844,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "3104:7:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint160_$",
                                        "typeString": "type(uint160)"
                                      },
                                      "typeName": {
                                        "id": 1843,
                                        "name": "uint160",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3104:7:19",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 1848,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3104:23:19",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  ],
                                  "id": 1842,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3096:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1841,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3096:7:19",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1849,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3096:32:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 1852,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3140:1:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 1851,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3132:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1850,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3132:7:19",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1853,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3132:10:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "3096:46:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f6e2d6578697374696e67204e4654",
                              "id": 1855,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3144:29:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d5290294c0b7ad6913fae1832076fb2552b80ffccbd7db3c426d932ecf724f10",
                                "typeString": "literal_string \"Inventory: non-existing NFT\""
                              },
                              "value": "Inventory: non-existing NFT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d5290294c0b7ad6913fae1832076fb2552b80ffccbd7db3c426d932ecf724f10",
                                "typeString": "literal_string \"Inventory: non-existing NFT\""
                              }
                            ],
                            "id": 1840,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3088:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1856,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3088:86:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1857,
                        "nodeType": "ExpressionStatement",
                        "src": "3088:86:19"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1859,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1834,
                              "src": "3195:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1858,
                            "name": "uri",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1872,
                            "src": "3191:3:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_string_memory_ptr_$",
                              "typeString": "function (uint256) view returns (string memory)"
                            }
                          },
                          "id": 1860,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3191:10:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 1839,
                        "id": 1861,
                        "nodeType": "Return",
                        "src": "3184:17:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1832,
                    "nodeType": "StructuredDocumentation",
                    "src": "2954:31:19",
                    "text": "@inheritdoc IERC721Metadata"
                  },
                  "functionSelector": "c87b56dd",
                  "id": 1863,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tokenURI",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1836,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3045:8:19"
                  },
                  "parameters": {
                    "id": 1835,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1834,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 1863,
                        "src": "3008:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1833,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3008:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3007:15:19"
                  },
                  "returnParameters": {
                    "id": 1839,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1838,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1863,
                        "src": "3063:13:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1837,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3063:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3062:15:19"
                  },
                  "scope": 3977,
                  "src": "2990:218:19",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1659
                  ],
                  "documentation": {
                    "id": 1864,
                    "nodeType": "StructuredDocumentation",
                    "src": "3343:35:19",
                    "text": "@inheritdoc IERC1155MetadataURI"
                  },
                  "functionSelector": "0e89341c",
                  "id": 1872,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "uri",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1868,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3425:8:19"
                  },
                  "parameters": {
                    "id": 1867,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1866,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1872,
                        "src": "3396:7:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1865,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3396:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3395:9:19"
                  },
                  "returnParameters": {
                    "id": 1871,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1870,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1872,
                        "src": "3443:13:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1869,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3443:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3442:15:19"
                  },
                  "scope": 3977,
                  "src": "3383:75:19",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    5210
                  ],
                  "body": {
                    "id": 1895,
                    "nodeType": "Block",
                    "src": "3709:118:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1887,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1882,
                                "name": "tokenOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1875,
                                "src": "3727:10:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 1885,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3749:1:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 1884,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3741:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1883,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3741:7:19",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1886,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3741:10:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "3727:24:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207a65726f2061646472657373",
                              "id": 1888,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3753:25:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_42707ea16674aa865e75081e780ce914a2dbf36492fac37b9d85bcb15fc7e9d7",
                                "typeString": "literal_string \"Inventory: zero address\""
                              },
                              "value": "Inventory: zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_42707ea16674aa865e75081e780ce914a2dbf36492fac37b9d85bcb15fc7e9d7",
                                "typeString": "literal_string \"Inventory: zero address\""
                              }
                            ],
                            "id": 1881,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3719:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1889,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3719:60:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1890,
                        "nodeType": "ExpressionStatement",
                        "src": "3719:60:19"
                      },
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 1891,
                            "name": "_nftBalances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1750,
                            "src": "3796:12:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 1893,
                          "indexExpression": {
                            "id": 1892,
                            "name": "tokenOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1875,
                            "src": "3809:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3796:24:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 1880,
                        "id": 1894,
                        "nodeType": "Return",
                        "src": "3789:31:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1873,
                    "nodeType": "StructuredDocumentation",
                    "src": "3593:23:19",
                    "text": "@inheritdoc IERC721"
                  },
                  "functionSelector": "70a08231",
                  "id": 1896,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1877,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3682:8:19"
                  },
                  "parameters": {
                    "id": 1876,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1875,
                        "mutability": "mutable",
                        "name": "tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 1896,
                        "src": "3640:18:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1874,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3640:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3639:20:19"
                  },
                  "returnParameters": {
                    "id": 1880,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1879,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1896,
                        "src": "3700:7:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1878,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3700:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3699:9:19"
                  },
                  "scope": 3977,
                  "src": "3621:206:19",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    5226
                  ],
                  "body": {
                    "id": 1998,
                    "nodeType": "Block",
                    "src": "3931:925:19",
                    "statements": [
                      {
                        "assignments": [
                          1906
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1906,
                            "mutability": "mutable",
                            "name": "owner",
                            "nodeType": "VariableDeclaration",
                            "scope": 1998,
                            "src": "3941:13:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1905,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3941:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1910,
                        "initialValue": {
                          "baseExpression": {
                            "id": 1907,
                            "name": "_owners",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 800,
                            "src": "3957:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 1909,
                          "indexExpression": {
                            "id": 1908,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1901,
                            "src": "3965:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3957:16:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3941:32:19"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1914,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1912,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1906,
                                "src": "3991:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 1913,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4000:1:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3991:10:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f6e2d6578697374696e67204e4654",
                              "id": 1915,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4003:29:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d5290294c0b7ad6913fae1832076fb2552b80ffccbd7db3c426d932ecf724f10",
                                "typeString": "literal_string \"Inventory: non-existing NFT\""
                              },
                              "value": "Inventory: non-existing NFT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d5290294c0b7ad6913fae1832076fb2552b80ffccbd7db3c426d932ecf724f10",
                                "typeString": "literal_string \"Inventory: non-existing NFT\""
                              }
                            ],
                            "id": 1911,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3983:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1916,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3983:50:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1917,
                        "nodeType": "ExpressionStatement",
                        "src": "3983:50:19"
                      },
                      {
                        "assignments": [
                          1919
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1919,
                            "mutability": "mutable",
                            "name": "ownerAddress",
                            "nodeType": "VariableDeclaration",
                            "scope": 1998,
                            "src": "4043:20:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 1918,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4043:7:19",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1927,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 1924,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1906,
                                  "src": "4082:5:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 1923,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4074:7:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint160_$",
                                  "typeString": "type(uint160)"
                                },
                                "typeName": {
                                  "id": 1922,
                                  "name": "uint160",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4074:7:19",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1925,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4074:14:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            ],
                            "id": 1921,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4066:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 1920,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4066:7:19",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 1926,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4066:23:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4043:46:19"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1931,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1929,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1899,
                                "src": "4107:2:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "id": 1930,
                                "name": "ownerAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1919,
                                "src": "4113:12:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4107:18:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a2073656c662d617070726f76616c",
                              "id": 1932,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4127:26:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7c4ceb33c8a3e4251a079e5bc00a1d088f7b07efcf485dc31e509282980ff352",
                                "typeString": "literal_string \"Inventory: self-approval\""
                              },
                              "value": "Inventory: self-approval"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7c4ceb33c8a3e4251a079e5bc00a1d088f7b07efcf485dc31e509282980ff352",
                                "typeString": "literal_string \"Inventory: self-approval\""
                              }
                            ],
                            "id": 1928,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4099:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1933,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4099:55:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1934,
                        "nodeType": "ExpressionStatement",
                        "src": "4099:55:19"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 1937,
                                  "name": "ownerAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1919,
                                  "src": "4186:12:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 1938,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 229,
                                    "src": "4200:10:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                      "typeString": "function () view returns (address payable)"
                                    }
                                  },
                                  "id": 1939,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4200:12:19",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                ],
                                "id": 1936,
                                "name": "_isOperatable",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1232,
                                "src": "4172:13:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address,address) view returns (bool)"
                                }
                              },
                              "id": 1940,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4172:41:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f6e2d617070726f7665642073656e646572",
                              "id": 1941,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4215:32:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6b20705240a74b98ad3770de0b6354de37c9aed640ae675f48200e7f883462f0",
                                "typeString": "literal_string \"Inventory: non-approved sender\""
                              },
                              "value": "Inventory: non-approved sender"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6b20705240a74b98ad3770de0b6354de37c9aed640ae675f48200e7f883462f0",
                                "typeString": "literal_string \"Inventory: non-approved sender\""
                              }
                            ],
                            "id": 1935,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4164:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1942,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4164:84:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1943,
                        "nodeType": "ExpressionStatement",
                        "src": "4164:84:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1949,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1944,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1899,
                            "src": "4262:2:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 1947,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4276:1:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 1946,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4268:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1945,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4268:7:19",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 1948,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4268:10:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "4262:16:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 1990,
                          "nodeType": "Block",
                          "src": "4488:312:19",
                          "statements": [
                            {
                              "assignments": [
                                1968
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1968,
                                  "mutability": "mutable",
                                  "name": "ownerWithApprovalBit",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1990,
                                  "src": "4502:28:19",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 1967,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4502:7:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1972,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1971,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 1969,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1906,
                                  "src": "4533:5:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "|",
                                "rightExpression": {
                                  "id": 1970,
                                  "name": "_APPROVAL_BIT_TOKEN_OWNER_",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1742,
                                  "src": "4541:26:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4533:34:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4502:65:19"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1975,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 1973,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1906,
                                  "src": "4585:5:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "id": 1974,
                                  "name": "ownerWithApprovalBit",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1968,
                                  "src": "4594:20:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4585:29:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 1983,
                              "nodeType": "IfStatement",
                              "src": "4581:168:19",
                              "trueBody": {
                                "id": 1982,
                                "nodeType": "Block",
                                "src": "4616:133:19",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 1980,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 1976,
                                          "name": "_owners",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 800,
                                          "src": "4695:7:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                            "typeString": "mapping(uint256 => uint256)"
                                          }
                                        },
                                        "id": 1978,
                                        "indexExpression": {
                                          "id": 1977,
                                          "name": "tokenId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1901,
                                          "src": "4703:7:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "4695:16:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "id": 1979,
                                        "name": "ownerWithApprovalBit",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1968,
                                        "src": "4714:20:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "4695:39:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1981,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4695:39:19"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "id": 1988,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 1984,
                                    "name": "_nftApprovals",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1754,
                                    "src": "4762:13:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                      "typeString": "mapping(uint256 => address)"
                                    }
                                  },
                                  "id": 1986,
                                  "indexExpression": {
                                    "id": 1985,
                                    "name": "tokenId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1901,
                                    "src": "4776:7:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4762:22:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 1987,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1899,
                                  "src": "4787:2:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "4762:27:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 1989,
                              "nodeType": "ExpressionStatement",
                              "src": "4762:27:19"
                            }
                          ]
                        },
                        "id": 1991,
                        "nodeType": "IfStatement",
                        "src": "4258:542:19",
                        "trueBody": {
                          "id": 1966,
                          "nodeType": "Block",
                          "src": "4280:202:19",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1954,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1952,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 1950,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1906,
                                    "src": "4298:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "id": 1951,
                                    "name": "_APPROVAL_BIT_TOKEN_OWNER_",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1742,
                                    "src": "4306:26:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "4298:34:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 1953,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4336:1:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "4298:39:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 1965,
                              "nodeType": "IfStatement",
                              "src": "4294:178:19",
                              "trueBody": {
                                "id": 1964,
                                "nodeType": "Block",
                                "src": "4339:133:19",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 1962,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 1955,
                                          "name": "_owners",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 800,
                                          "src": "4417:7:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                            "typeString": "mapping(uint256 => uint256)"
                                          }
                                        },
                                        "id": 1957,
                                        "indexExpression": {
                                          "id": 1956,
                                          "name": "tokenId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1901,
                                          "src": "4425:7:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "4417:16:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "id": 1960,
                                            "name": "ownerAddress",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1919,
                                            "src": "4444:12:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 1959,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "4436:7:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint256_$",
                                            "typeString": "type(uint256)"
                                          },
                                          "typeName": {
                                            "id": 1958,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "4436:7:19",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 1961,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "4436:21:19",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "4417:40:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1963,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4417:40:19"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 1993,
                              "name": "ownerAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1919,
                              "src": "4823:12:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1994,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1899,
                              "src": "4837:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1995,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1901,
                              "src": "4841:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1992,
                            "name": "Approval",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4653,
                            "src": "4814:8:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 1996,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4814:35:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1997,
                        "nodeType": "EmitStatement",
                        "src": "4809:40:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1897,
                    "nodeType": "StructuredDocumentation",
                    "src": "3833:23:19",
                    "text": "@inheritdoc IERC721"
                  },
                  "functionSelector": "095ea7b3",
                  "id": 1999,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1903,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3922:8:19"
                  },
                  "parameters": {
                    "id": 1902,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1899,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 1999,
                        "src": "3878:10:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1898,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3878:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1901,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 1999,
                        "src": "3890:15:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1900,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3890:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3877:29:19"
                  },
                  "returnParameters": {
                    "id": 1904,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3931:0:19"
                  },
                  "scope": 3977,
                  "src": "3861:995:19",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    5234
                  ],
                  "body": {
                    "id": 2047,
                    "nodeType": "Block",
                    "src": "4975:292:19",
                    "statements": [
                      {
                        "assignments": [
                          2009
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2009,
                            "mutability": "mutable",
                            "name": "owner",
                            "nodeType": "VariableDeclaration",
                            "scope": 2047,
                            "src": "4985:13:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2008,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4985:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2013,
                        "initialValue": {
                          "baseExpression": {
                            "id": 2010,
                            "name": "_owners",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 800,
                            "src": "5001:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 2012,
                          "indexExpression": {
                            "id": 2011,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2002,
                            "src": "5009:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5001:16:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4985:32:19"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              "id": 2026,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 2019,
                                        "name": "owner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2009,
                                        "src": "5051:5:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 2018,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5043:7:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint160_$",
                                        "typeString": "type(uint160)"
                                      },
                                      "typeName": {
                                        "id": 2017,
                                        "name": "uint160",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5043:7:19",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 2020,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5043:14:19",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  ],
                                  "id": 2016,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5035:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2015,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5035:7:19",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2021,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5035:23:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 2024,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5070:1:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 2023,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5062:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2022,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5062:7:19",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2025,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5062:10:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "5035:37:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f6e2d6578697374696e67204e4654",
                              "id": 2027,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5074:29:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d5290294c0b7ad6913fae1832076fb2552b80ffccbd7db3c426d932ecf724f10",
                                "typeString": "literal_string \"Inventory: non-existing NFT\""
                              },
                              "value": "Inventory: non-existing NFT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d5290294c0b7ad6913fae1832076fb2552b80ffccbd7db3c426d932ecf724f10",
                                "typeString": "literal_string \"Inventory: non-existing NFT\""
                              }
                            ],
                            "id": 2014,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5027:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2028,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5027:77:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2029,
                        "nodeType": "ExpressionStatement",
                        "src": "5027:77:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2034,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2032,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 2030,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2009,
                              "src": "5118:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "id": 2031,
                              "name": "_APPROVAL_BIT_TOKEN_OWNER_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1742,
                              "src": "5126:26:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5118:34:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 2033,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5156:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "5118:39:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 2045,
                          "nodeType": "Block",
                          "src": "5219:42:19",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 2042,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5248:1:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 2041,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5240:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2040,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5240:7:19",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2043,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5240:10:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "functionReturnParameters": 2007,
                              "id": 2044,
                              "nodeType": "Return",
                              "src": "5233:17:19"
                            }
                          ]
                        },
                        "id": 2046,
                        "nodeType": "IfStatement",
                        "src": "5114:147:19",
                        "trueBody": {
                          "id": 2039,
                          "nodeType": "Block",
                          "src": "5159:54:19",
                          "statements": [
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 2035,
                                  "name": "_nftApprovals",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1754,
                                  "src": "5180:13:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                    "typeString": "mapping(uint256 => address)"
                                  }
                                },
                                "id": 2037,
                                "indexExpression": {
                                  "id": 2036,
                                  "name": "tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2002,
                                  "src": "5194:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5180:22:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "functionReturnParameters": 2007,
                              "id": 2038,
                              "nodeType": "Return",
                              "src": "5173:29:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2000,
                    "nodeType": "StructuredDocumentation",
                    "src": "4862:23:19",
                    "text": "@inheritdoc IERC721"
                  },
                  "functionSelector": "081812fc",
                  "id": 2048,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getApproved",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2004,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4948:8:19"
                  },
                  "parameters": {
                    "id": 2003,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2002,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 2048,
                        "src": "4911:15:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2001,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4911:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4910:17:19"
                  },
                  "returnParameters": {
                    "id": 2007,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2006,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2048,
                        "src": "4966:7:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2005,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4966:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4965:9:19"
                  },
                  "scope": 3977,
                  "src": "4890:377:19",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    4664
                  ],
                  "body": {
                    "id": 2067,
                    "nodeType": "Block",
                    "src": "5431:151:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2060,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2051,
                              "src": "5468:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2061,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2053,
                              "src": "5486:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2062,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2055,
                              "src": "5502:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 2063,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5521:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 2064,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5560:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 2059,
                            "name": "_transferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2566,
                            "src": "5441:13:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,uint256,bytes memory,bool)"
                            }
                          },
                          "id": 2065,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5441:134:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2066,
                        "nodeType": "ExpressionStatement",
                        "src": "5441:134:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2049,
                    "nodeType": "StructuredDocumentation",
                    "src": "5273:36:19",
                    "text": "@inheritdoc IERC1155721Inventory"
                  },
                  "functionSelector": "23b872dd",
                  "id": 2068,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2057,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5422:8:19"
                  },
                  "parameters": {
                    "id": 2056,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2051,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 2068,
                        "src": "5345:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2050,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5345:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2053,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 2068,
                        "src": "5367:10:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2052,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5367:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2055,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 2068,
                        "src": "5387:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2054,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5387:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5335:71:19"
                  },
                  "returnParameters": {
                    "id": 2058,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5431:0:19"
                  },
                  "scope": 3977,
                  "src": "5314:268:19",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    4675
                  ],
                  "body": {
                    "id": 2087,
                    "nodeType": "Block",
                    "src": "5750:150:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2080,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2071,
                              "src": "5787:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2081,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2073,
                              "src": "5805:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2082,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2075,
                              "src": "5821:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 2083,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5840:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            },
                            {
                              "hexValue": "74727565",
                              "id": 2084,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5879:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 2079,
                            "name": "_transferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2566,
                            "src": "5760:13:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,uint256,bytes memory,bool)"
                            }
                          },
                          "id": 2085,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5760:133:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2086,
                        "nodeType": "ExpressionStatement",
                        "src": "5760:133:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2069,
                    "nodeType": "StructuredDocumentation",
                    "src": "5588:36:19",
                    "text": "@inheritdoc IERC1155721Inventory"
                  },
                  "functionSelector": "42842e0e",
                  "id": 2088,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2077,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5741:8:19"
                  },
                  "parameters": {
                    "id": 2076,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2071,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 2088,
                        "src": "5664:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2070,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5664:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2073,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 2088,
                        "src": "5686:10:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2072,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5686:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2075,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 2088,
                        "src": "5706:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2074,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5706:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5654:71:19"
                  },
                  "returnParameters": {
                    "id": 2078,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5750:0:19"
                  },
                  "scope": 3977,
                  "src": "5629:271:19",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    4688
                  ],
                  "body": {
                    "id": 2109,
                    "nodeType": "Block",
                    "src": "6095:152:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2102,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2091,
                              "src": "6132:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2103,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2093,
                              "src": "6150:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2104,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2095,
                              "src": "6166:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 2105,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2097,
                              "src": "6185:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "74727565",
                              "id": 2106,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6226:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 2101,
                            "name": "_transferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2566,
                            "src": "6105:13:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,uint256,bytes memory,bool)"
                            }
                          },
                          "id": 2107,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6105:135:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2108,
                        "nodeType": "ExpressionStatement",
                        "src": "6105:135:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2089,
                    "nodeType": "StructuredDocumentation",
                    "src": "5906:36:19",
                    "text": "@inheritdoc IERC1155721Inventory"
                  },
                  "functionSelector": "b88d4fde",
                  "id": 2110,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2099,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6086:8:19"
                  },
                  "parameters": {
                    "id": 2098,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2091,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 2110,
                        "src": "5982:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2090,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5982:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2093,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 2110,
                        "src": "6004:10:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2092,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6004:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2095,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 2110,
                        "src": "6024:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2094,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6024:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2097,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 2110,
                        "src": "6047:17:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2096,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6047:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5972:98:19"
                  },
                  "returnParameters": {
                    "id": 2100,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6095:0:19"
                  },
                  "scope": 3977,
                  "src": "5947:300:19",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    4700
                  ],
                  "body": {
                    "id": 2293,
                    "nodeType": "Block",
                    "src": "6426:1557:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2128,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2123,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2115,
                                "src": "6444:2:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 2126,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6458:1:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 2125,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6450:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2124,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6450:7:19",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2127,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6450:10:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "6444:16:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207472616e7366657220746f207a65726f",
                              "id": 2129,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6462:29:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0f91cf9f592889ad442a51e80a8626af0c0cbfd82b9e1961086f5191f456323b",
                                "typeString": "literal_string \"Inventory: transfer to zero\""
                              },
                              "value": "Inventory: transfer to zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0f91cf9f592889ad442a51e80a8626af0c0cbfd82b9e1961086f5191f456323b",
                                "typeString": "literal_string \"Inventory: transfer to zero\""
                              }
                            ],
                            "id": 2122,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6436:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2130,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6436:56:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2131,
                        "nodeType": "ExpressionStatement",
                        "src": "6436:56:19"
                      },
                      {
                        "assignments": [
                          2133
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2133,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 2293,
                            "src": "6502:14:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2132,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6502:7:19",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2136,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 2134,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 229,
                            "src": "6519:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 2135,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6519:12:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6502:29:19"
                      },
                      {
                        "assignments": [
                          2138
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2138,
                            "mutability": "mutable",
                            "name": "operatable",
                            "nodeType": "VariableDeclaration",
                            "scope": 2293,
                            "src": "6541:15:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 2137,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "6541:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2143,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2140,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2113,
                              "src": "6573:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2141,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2133,
                              "src": "6579:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2139,
                            "name": "_isOperatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1232,
                            "src": "6559:13:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view returns (bool)"
                            }
                          },
                          "id": 2142,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6559:27:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6541:45:19"
                      },
                      {
                        "assignments": [
                          2145
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2145,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 2293,
                            "src": "6597:14:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2144,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6597:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2148,
                        "initialValue": {
                          "expression": {
                            "id": 2146,
                            "name": "nftIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2118,
                            "src": "6614:6:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 2147,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "6614:13:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6597:30:19"
                      },
                      {
                        "assignments": [
                          2153
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2153,
                            "mutability": "mutable",
                            "name": "values",
                            "nodeType": "VariableDeclaration",
                            "scope": 2293,
                            "src": "6637:23:19",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 2151,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "6637:7:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2152,
                              "nodeType": "ArrayTypeName",
                              "src": "6637:9:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2159,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2157,
                              "name": "length",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2145,
                              "src": "6677:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2156,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "6663:13:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 2154,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "6667:7:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2155,
                              "nodeType": "ArrayTypeName",
                              "src": "6667:9:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 2158,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6663:21:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6637:47:19"
                      },
                      {
                        "assignments": [
                          2161
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2161,
                            "mutability": "mutable",
                            "name": "nfCollectionId",
                            "nodeType": "VariableDeclaration",
                            "scope": 2293,
                            "src": "6695:22:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2160,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6695:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2162,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6695:22:19"
                      },
                      {
                        "assignments": [
                          2164
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2164,
                            "mutability": "mutable",
                            "name": "nfCollectionCount",
                            "nodeType": "VariableDeclaration",
                            "scope": 2293,
                            "src": "6727:25:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2163,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6727:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2165,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6727:25:19"
                      },
                      {
                        "body": {
                          "id": 2247,
                          "nodeType": "Block",
                          "src": "6796:778:19",
                          "statements": [
                            {
                              "assignments": [
                                2176
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2176,
                                  "mutability": "mutable",
                                  "name": "nftId",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2247,
                                  "src": "6810:13:19",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2175,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6810:7:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2180,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 2177,
                                  "name": "nftIds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2118,
                                  "src": "6826:6:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 2179,
                                "indexExpression": {
                                  "id": 2178,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2167,
                                  "src": "6833:1:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6826:9:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6810:25:19"
                            },
                            {
                              "expression": {
                                "id": 2185,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 2181,
                                    "name": "values",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2153,
                                    "src": "6849:6:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 2183,
                                  "indexExpression": {
                                    "id": 2182,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2167,
                                    "src": "6856:1:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "6849:9:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "31",
                                  "id": 2184,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6861:1:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "6849:13:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2186,
                              "nodeType": "ExpressionStatement",
                              "src": "6849:13:19"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2188,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2113,
                                    "src": "6889:4:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2189,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2115,
                                    "src": "6895:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2190,
                                    "name": "nftId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2176,
                                    "src": "6899:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "hexValue": "31",
                                    "id": 2191,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6906:1:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  {
                                    "id": 2192,
                                    "name": "operatable",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2138,
                                    "src": "6909:10:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "74727565",
                                    "id": 2193,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6921:4:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "true"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 2187,
                                  "name": "_transferNFT",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3843,
                                  "src": "6876:12:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$_t_bool_$returns$__$",
                                    "typeString": "function (address,address,uint256,uint256,bool,bool)"
                                  }
                                },
                                "id": 2194,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6876:50:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2195,
                              "nodeType": "ExpressionStatement",
                              "src": "6876:50:19"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 2197,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2113,
                                    "src": "6954:4:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2198,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2115,
                                    "src": "6960:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2199,
                                    "name": "nftId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2176,
                                    "src": "6964:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 2196,
                                  "name": "Transfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4645,
                                  "src": "6945:8:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 2200,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6945:25:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2201,
                              "nodeType": "EmitStatement",
                              "src": "6940:30:19"
                            },
                            {
                              "assignments": [
                                2203
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2203,
                                  "mutability": "mutable",
                                  "name": "nextCollectionId",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2247,
                                  "src": "6984:24:19",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2202,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6984:7:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2208,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 2206,
                                    "name": "_collectionMaskLength",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 771,
                                    "src": "7042:21:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 2204,
                                    "name": "nftId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2176,
                                    "src": "7011:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 2205,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getNonFungibleCollection",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1362,
                                  "src": "7011:30:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 2207,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7011:53:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6984:80:19"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2211,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 2209,
                                  "name": "nfCollectionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2161,
                                  "src": "7082:14:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 2210,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7100:1:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7082:19:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 2245,
                                "nodeType": "Block",
                                "src": "7214:350:19",
                                "statements": [
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 2223,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 2221,
                                        "name": "nextCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2203,
                                        "src": "7236:16:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "!=",
                                      "rightExpression": {
                                        "id": 2222,
                                        "name": "nfCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2161,
                                        "src": "7256:14:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7236:34:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "id": 2243,
                                      "nodeType": "Block",
                                      "src": "7490:60:19",
                                      "statements": [
                                        {
                                          "expression": {
                                            "id": 2241,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "UnaryOperation",
                                            "operator": "++",
                                            "prefix": true,
                                            "src": "7512:19:19",
                                            "subExpression": {
                                              "id": 2240,
                                              "name": "nfCollectionCount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2164,
                                              "src": "7514:17:19",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 2242,
                                          "nodeType": "ExpressionStatement",
                                          "src": "7512:19:19"
                                        }
                                      ]
                                    },
                                    "id": 2244,
                                    "nodeType": "IfStatement",
                                    "src": "7232:318:19",
                                    "trueBody": {
                                      "id": 2239,
                                      "nodeType": "Block",
                                      "src": "7272:212:19",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "id": 2225,
                                                "name": "from",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2113,
                                                "src": "7323:4:19",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "id": 2226,
                                                "name": "to",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2115,
                                                "src": "7329:2:19",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "id": 2227,
                                                "name": "nfCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2161,
                                                "src": "7333:14:19",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              {
                                                "id": 2228,
                                                "name": "nfCollectionCount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2164,
                                                "src": "7349:17:19",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "id": 2224,
                                              "name": "_transferNFTUpdateCollection",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3903,
                                              "src": "7294:28:19",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,address,uint256,uint256)"
                                              }
                                            },
                                            "id": 2229,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "7294:73:19",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 2230,
                                          "nodeType": "ExpressionStatement",
                                          "src": "7294:73:19"
                                        },
                                        {
                                          "expression": {
                                            "id": 2233,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 2231,
                                              "name": "nfCollectionId",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2161,
                                              "src": "7389:14:19",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "id": 2232,
                                              "name": "nextCollectionId",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2203,
                                              "src": "7406:16:19",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "7389:33:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 2234,
                                          "nodeType": "ExpressionStatement",
                                          "src": "7389:33:19"
                                        },
                                        {
                                          "expression": {
                                            "id": 2237,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 2235,
                                              "name": "nfCollectionCount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2164,
                                              "src": "7444:17:19",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "hexValue": "31",
                                              "id": 2236,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "7464:1:19",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_1_by_1",
                                                "typeString": "int_const 1"
                                              },
                                              "value": "1"
                                            },
                                            "src": "7444:21:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 2238,
                                          "nodeType": "ExpressionStatement",
                                          "src": "7444:21:19"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              "id": 2246,
                              "nodeType": "IfStatement",
                              "src": "7078:486:19",
                              "trueBody": {
                                "id": 2220,
                                "nodeType": "Block",
                                "src": "7103:105:19",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 2214,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 2212,
                                        "name": "nfCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2161,
                                        "src": "7121:14:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "id": 2213,
                                        "name": "nextCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2203,
                                        "src": "7138:16:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7121:33:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2215,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7121:33:19"
                                  },
                                  {
                                    "expression": {
                                      "id": 2218,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 2216,
                                        "name": "nfCollectionCount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2164,
                                        "src": "7172:17:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "hexValue": "31",
                                        "id": 2217,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7192:1:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "7172:21:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2219,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7172:21:19"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2171,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2169,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2167,
                            "src": "6778:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 2170,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2145,
                            "src": "6783:6:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6778:11:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2248,
                        "initializationExpression": {
                          "assignments": [
                            2167
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 2167,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 2248,
                              "src": "6767:9:19",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 2166,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "6767:7:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 2168,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "6767:9:19"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 2173,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "6791:3:19",
                            "subExpression": {
                              "id": 2172,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2167,
                              "src": "6793:1:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2174,
                          "nodeType": "ExpressionStatement",
                          "src": "6791:3:19"
                        },
                        "nodeType": "ForStatement",
                        "src": "6762:812:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2251,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2249,
                            "name": "nfCollectionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2161,
                            "src": "7588:14:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 2250,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7606:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "7588:19:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2266,
                        "nodeType": "IfStatement",
                        "src": "7584:181:19",
                        "trueBody": {
                          "id": 2265,
                          "nodeType": "Block",
                          "src": "7609:156:19",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2253,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2113,
                                    "src": "7652:4:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2254,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2115,
                                    "src": "7658:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2255,
                                    "name": "nfCollectionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2161,
                                    "src": "7662:14:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 2256,
                                    "name": "nfCollectionCount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2164,
                                    "src": "7678:17:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 2252,
                                  "name": "_transferNFTUpdateCollection",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3903,
                                  "src": "7623:28:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256,uint256)"
                                  }
                                },
                                "id": 2257,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7623:73:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2258,
                              "nodeType": "ExpressionStatement",
                              "src": "7623:73:19"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2260,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2113,
                                    "src": "7737:4:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2261,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2115,
                                    "src": "7743:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2262,
                                    "name": "length",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2145,
                                    "src": "7747:6:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 2259,
                                  "name": "_transferNFTUpdateBalances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3870,
                                  "src": "7710:26:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 2263,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7710:44:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2264,
                              "nodeType": "ExpressionStatement",
                              "src": "7710:44:19"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 2268,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 229,
                                "src": "7794:10:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 2269,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7794:12:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 2270,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2113,
                              "src": "7808:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2271,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2115,
                              "src": "7814:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2272,
                              "name": "nftIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2118,
                              "src": "7818:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 2273,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2153,
                              "src": "7826:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 2267,
                            "name": "TransferBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1410,
                            "src": "7780:13:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 2274,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7780:53:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2275,
                        "nodeType": "EmitStatement",
                        "src": "7775:58:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2282,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 2276,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2115,
                                "src": "7847:2:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 2277,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "isContract",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 588,
                              "src": "7847:13:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                                "typeString": "function (address) view returns (bool)"
                              }
                            },
                            "id": 2278,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7847:15:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 2280,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2115,
                                "src": "7890:2:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 2279,
                              "name": "_isERC1155TokenReceiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3944,
                              "src": "7866:23:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                "typeString": "function (address) view returns (bool)"
                              }
                            },
                            "id": 2281,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7866:27:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7847:46:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2292,
                        "nodeType": "IfStatement",
                        "src": "7843:134:19",
                        "trueBody": {
                          "id": 2291,
                          "nodeType": "Block",
                          "src": "7895:82:19",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2284,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2113,
                                    "src": "7937:4:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2285,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2115,
                                    "src": "7943:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2286,
                                    "name": "nftIds",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2118,
                                    "src": "7947:6:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 2287,
                                    "name": "values",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2153,
                                    "src": "7955:6:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "hexValue": "",
                                    "id": 2288,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7963:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                      "typeString": "literal_string \"\""
                                    },
                                    "value": ""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                      "typeString": "literal_string \"\""
                                    }
                                  ],
                                  "id": 2283,
                                  "name": "_callOnERC1155BatchReceived",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1298,
                                  "src": "7909:27:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory)"
                                  }
                                },
                                "id": 2289,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7909:57:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2290,
                              "nodeType": "ExpressionStatement",
                              "src": "7909:57:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2111,
                    "nodeType": "StructuredDocumentation",
                    "src": "6253:36:19",
                    "text": "@inheritdoc IERC1155721Inventory"
                  },
                  "functionSelector": "f3993d11",
                  "id": 2294,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2120,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6417:8:19"
                  },
                  "parameters": {
                    "id": 2119,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2113,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 2294,
                        "src": "6330:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2112,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6330:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2115,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 2294,
                        "src": "6352:10:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2114,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6352:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2118,
                        "mutability": "mutable",
                        "name": "nftIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 2294,
                        "src": "6372:23:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2116,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "6372:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2117,
                          "nodeType": "ArrayTypeName",
                          "src": "6372:9:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6320:81:19"
                  },
                  "returnParameters": {
                    "id": 2121,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6426:0:19"
                  },
                  "scope": 3977,
                  "src": "6294:1689:19",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1581,
                    4715
                  ],
                  "body": {
                    "id": 2393,
                    "nodeType": "Block",
                    "src": "8368:681:19",
                    "statements": [
                      {
                        "assignments": [
                          2312
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2312,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 2393,
                            "src": "8378:14:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2311,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "8378:7:19",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2315,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 2313,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 229,
                            "src": "8395:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 2314,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8395:12:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8378:29:19"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2322,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2317,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2299,
                                "src": "8425:2:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 2320,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8439:1:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 2319,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8431:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2318,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8431:7:19",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2321,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8431:10:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "8425:16:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207472616e7366657220746f207a65726f",
                              "id": 2323,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8443:29:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0f91cf9f592889ad442a51e80a8626af0c0cbfd82b9e1961086f5191f456323b",
                                "typeString": "literal_string \"Inventory: transfer to zero\""
                              },
                              "value": "Inventory: transfer to zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0f91cf9f592889ad442a51e80a8626af0c0cbfd82b9e1961086f5191f456323b",
                                "typeString": "literal_string \"Inventory: transfer to zero\""
                              }
                            ],
                            "id": 2316,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8417:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2324,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8417:56:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2325,
                        "nodeType": "ExpressionStatement",
                        "src": "8417:56:19"
                      },
                      {
                        "assignments": [
                          2327
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2327,
                            "mutability": "mutable",
                            "name": "operatable",
                            "nodeType": "VariableDeclaration",
                            "scope": 2393,
                            "src": "8483:15:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 2326,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "8483:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2332,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2329,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2297,
                              "src": "8515:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2330,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2312,
                              "src": "8521:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2328,
                            "name": "_isOperatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1232,
                            "src": "8501:13:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view returns (bool)"
                            }
                          },
                          "id": 2331,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8501:27:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8483:45:19"
                      },
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 2333,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2301,
                              "src": "8543:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2334,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isFungibleToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1321,
                            "src": "8543:18:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (bool)"
                            }
                          },
                          "id": 2335,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8543:20:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "arguments": [
                              {
                                "id": 2347,
                                "name": "_collectionMaskLength",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 771,
                                "src": "8672:21:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 2345,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2301,
                                "src": "8650:2:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2346,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "isNonFungibleToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1345,
                              "src": "8650:21:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (bool)"
                              }
                            },
                            "id": 2348,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8650:44:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 2369,
                            "nodeType": "Block",
                            "src": "8820:60:19",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "hexValue": "496e76656e746f72793a206e6f74206120746f6b656e206964",
                                      "id": 2366,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8841:27:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                        "typeString": "literal_string \"Inventory: not a token id\""
                                      },
                                      "value": "Inventory: not a token id"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                        "typeString": "literal_string \"Inventory: not a token id\""
                                      }
                                    ],
                                    "id": 2365,
                                    "name": "revert",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      -19,
                                      -19
                                    ],
                                    "referencedDeclaration": -19,
                                    "src": "8834:6:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                      "typeString": "function (string memory) pure"
                                    }
                                  },
                                  "id": 2367,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8834:35:19",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 2368,
                                "nodeType": "ExpressionStatement",
                                "src": "8834:35:19"
                              }
                            ]
                          },
                          "id": 2370,
                          "nodeType": "IfStatement",
                          "src": "8646:234:19",
                          "trueBody": {
                            "id": 2364,
                            "nodeType": "Block",
                            "src": "8696:118:19",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 2350,
                                      "name": "from",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2297,
                                      "src": "8723:4:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 2351,
                                      "name": "to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2299,
                                      "src": "8729:2:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 2352,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2301,
                                      "src": "8733:2:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 2353,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2303,
                                      "src": "8737:5:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 2354,
                                      "name": "operatable",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2327,
                                      "src": "8744:10:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    {
                                      "hexValue": "66616c7365",
                                      "id": 2355,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8756:5:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "id": 2349,
                                    "name": "_transferNFT",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3843,
                                    "src": "8710:12:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$_t_bool_$returns$__$",
                                      "typeString": "function (address,address,uint256,uint256,bool,bool)"
                                    }
                                  },
                                  "id": 2356,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8710:52:19",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 2357,
                                "nodeType": "ExpressionStatement",
                                "src": "8710:52:19"
                              },
                              {
                                "eventCall": {
                                  "arguments": [
                                    {
                                      "id": 2359,
                                      "name": "from",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2297,
                                      "src": "8790:4:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 2360,
                                      "name": "to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2299,
                                      "src": "8796:2:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 2361,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2301,
                                      "src": "8800:2:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 2358,
                                    "name": "Transfer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4645,
                                    "src": "8781:8:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                      "typeString": "function (address,address,uint256)"
                                    }
                                  },
                                  "id": 2362,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8781:22:19",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 2363,
                                "nodeType": "EmitStatement",
                                "src": "8776:27:19"
                              }
                            ]
                          }
                        },
                        "id": 2371,
                        "nodeType": "IfStatement",
                        "src": "8539:341:19",
                        "trueBody": {
                          "id": 2344,
                          "nodeType": "Block",
                          "src": "8565:75:19",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2337,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2297,
                                    "src": "8597:4:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2338,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2299,
                                    "src": "8603:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2339,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2301,
                                    "src": "8607:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 2340,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2303,
                                    "src": "8611:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 2341,
                                    "name": "operatable",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2327,
                                    "src": "8618:10:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 2336,
                                  "name": "_transferFungible",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3748,
                                  "src": "8579:17:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                                    "typeString": "function (address,address,uint256,uint256,bool)"
                                  }
                                },
                                "id": 2342,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8579:50:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2343,
                              "nodeType": "ExpressionStatement",
                              "src": "8579:50:19"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 2373,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2312,
                              "src": "8910:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2374,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2297,
                              "src": "8918:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2375,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2299,
                              "src": "8924:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2376,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2301,
                              "src": "8928:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 2377,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2303,
                              "src": "8932:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2372,
                            "name": "TransferSingle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1396,
                            "src": "8895:14:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 2378,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8895:43:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2379,
                        "nodeType": "EmitStatement",
                        "src": "8890:48:19"
                      },
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 2380,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2299,
                              "src": "8952:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 2381,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 588,
                            "src": "8952:13:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 2382,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8952:15:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2392,
                        "nodeType": "IfStatement",
                        "src": "8948:95:19",
                        "trueBody": {
                          "id": 2391,
                          "nodeType": "Block",
                          "src": "8969:74:19",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2384,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2297,
                                    "src": "9006:4:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2385,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2299,
                                    "src": "9012:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2386,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2301,
                                    "src": "9016:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 2387,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2303,
                                    "src": "9020:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 2388,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2305,
                                    "src": "9027:4:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 2383,
                                  "name": "_callOnERC1155Received",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1264,
                                  "src": "8983:22:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,uint256,uint256,bytes memory)"
                                  }
                                },
                                "id": 2389,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8983:49:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2390,
                              "nodeType": "ExpressionStatement",
                              "src": "8983:49:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2295,
                    "nodeType": "StructuredDocumentation",
                    "src": "8118:36:19",
                    "text": "@inheritdoc IERC1155721Inventory"
                  },
                  "functionSelector": "f242432a",
                  "id": 2394,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2309,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 2307,
                        "name": "IERC1155Inventory",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1599,
                        "src": "8327:17:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155Inventory_$1599",
                          "typeString": "contract IERC1155Inventory"
                        }
                      },
                      {
                        "id": 2308,
                        "name": "IERC1155721Inventory",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4768,
                        "src": "8346:20:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155721Inventory_$4768",
                          "typeString": "contract IERC1155721Inventory"
                        }
                      }
                    ],
                    "src": "8318:49:19"
                  },
                  "parameters": {
                    "id": 2306,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2297,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 2394,
                        "src": "8194:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2296,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8194:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2299,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 2394,
                        "src": "8216:10:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2298,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8216:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2301,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 2394,
                        "src": "8236:10:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2300,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8236:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2303,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 2394,
                        "src": "8256:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2302,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8256:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2305,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 2394,
                        "src": "8279:17:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2304,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "8279:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8184:118:19"
                  },
                  "returnParameters": {
                    "id": 2310,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8368:0:19"
                  },
                  "scope": 3977,
                  "src": "8159:890:19",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1598,
                    4732
                  ],
                  "body": {
                    "id": 2421,
                    "nodeType": "Block",
                    "src": "9330:68:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2414,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2397,
                              "src": "9363:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2415,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2399,
                              "src": "9369:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2416,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2402,
                              "src": "9373:3:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 2417,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2405,
                              "src": "9378:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 2418,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2407,
                              "src": "9386:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 2413,
                            "name": "_safeBatchTransferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2780,
                            "src": "9340:22:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 2419,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9340:51:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2420,
                        "nodeType": "ExpressionStatement",
                        "src": "9340:51:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2395,
                    "nodeType": "StructuredDocumentation",
                    "src": "9055:36:19",
                    "text": "@inheritdoc IERC1155721Inventory"
                  },
                  "functionSelector": "2eb2c2d6",
                  "id": 2422,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeBatchTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2411,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 2409,
                        "name": "IERC1155Inventory",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1599,
                        "src": "9289:17:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155Inventory_$1599",
                          "typeString": "contract IERC1155Inventory"
                        }
                      },
                      {
                        "id": 2410,
                        "name": "IERC1155721Inventory",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4768,
                        "src": "9308:20:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155721Inventory_$4768",
                          "typeString": "contract IERC1155721Inventory"
                        }
                      }
                    ],
                    "src": "9280:49:19"
                  },
                  "parameters": {
                    "id": 2408,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2397,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 2422,
                        "src": "9136:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2396,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9136:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2399,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 2422,
                        "src": "9158:10:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2398,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9158:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2402,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 2422,
                        "src": "9178:20:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2400,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "9178:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2401,
                          "nodeType": "ArrayTypeName",
                          "src": "9178:9:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2405,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 2422,
                        "src": "9208:23:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2403,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "9208:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2404,
                          "nodeType": "ArrayTypeName",
                          "src": "9208:9:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2407,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 2422,
                        "src": "9241:17:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2406,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "9241:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9126:138:19"
                  },
                  "returnParameters": {
                    "id": 2412,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9330:0:19"
                  },
                  "scope": 3977,
                  "src": "9096:302:19",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1019,
                    4743
                  ],
                  "body": {
                    "id": 2440,
                    "nodeType": "Block",
                    "src": "9702:60:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2436,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2425,
                              "src": "9736:8:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2437,
                              "name": "approved",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2427,
                              "src": "9746:8:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "expression": {
                              "id": 2433,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "9712:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_ERC1155721Inventory_$3977",
                                "typeString": "contract super ERC1155721Inventory"
                              }
                            },
                            "id": 2435,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setApprovalForAll",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1019,
                            "src": "9712:23:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,bool)"
                            }
                          },
                          "id": 2438,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9712:43:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2439,
                        "nodeType": "ExpressionStatement",
                        "src": "9712:43:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2423,
                    "nodeType": "StructuredDocumentation",
                    "src": "9533:36:19",
                    "text": "@inheritdoc IERC1155721Inventory"
                  },
                  "functionSelector": "a22cb465",
                  "id": 2441,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setApprovalForAll",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2431,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 2429,
                        "name": "IERC1155721Inventory",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4768,
                        "src": "9658:20:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155721Inventory_$4768",
                          "typeString": "contract IERC1155721Inventory"
                        }
                      },
                      {
                        "id": 2430,
                        "name": "ERC1155InventoryBase",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1299,
                        "src": "9680:20:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC1155InventoryBase_$1299",
                          "typeString": "contract ERC1155InventoryBase"
                        }
                      }
                    ],
                    "src": "9649:52:19"
                  },
                  "parameters": {
                    "id": 2428,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2425,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 2441,
                        "src": "9601:16:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2424,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9601:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2427,
                        "mutability": "mutable",
                        "name": "approved",
                        "nodeType": "VariableDeclaration",
                        "scope": 2441,
                        "src": "9619:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2426,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "9619:4:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9600:33:19"
                  },
                  "returnParameters": {
                    "id": 2432,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9702:0:19"
                  },
                  "scope": 3977,
                  "src": "9574:188:19",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1037,
                    4756
                  ],
                  "body": {
                    "id": 2460,
                    "nodeType": "Block",
                    "src": "10005:68:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2456,
                              "name": "tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2444,
                              "src": "10045:10:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2457,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2446,
                              "src": "10057:8:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 2454,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "10022:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_ERC1155721Inventory_$3977",
                                "typeString": "contract super ERC1155721Inventory"
                              }
                            },
                            "id": 2455,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isApprovedForAll",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1037,
                            "src": "10022:22:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view returns (bool)"
                            }
                          },
                          "id": 2458,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10022:44:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 2453,
                        "id": 2459,
                        "nodeType": "Return",
                        "src": "10015:51:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2442,
                    "nodeType": "StructuredDocumentation",
                    "src": "9768:36:19",
                    "text": "@inheritdoc IERC1155721Inventory"
                  },
                  "functionSelector": "e985e9c5",
                  "id": 2461,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isApprovedForAll",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2450,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 2448,
                        "name": "IERC1155721Inventory",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4768,
                        "src": "9934:20:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155721Inventory_$4768",
                          "typeString": "contract IERC1155721Inventory"
                        }
                      },
                      {
                        "id": 2449,
                        "name": "ERC1155InventoryBase",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1299,
                        "src": "9956:20:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC1155InventoryBase_$1299",
                          "typeString": "contract ERC1155InventoryBase"
                        }
                      }
                    ],
                    "src": "9925:52:19"
                  },
                  "parameters": {
                    "id": 2447,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2444,
                        "mutability": "mutable",
                        "name": "tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 2461,
                        "src": "9835:18:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2443,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9835:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2446,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 2461,
                        "src": "9855:16:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2445,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9855:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9834:38:19"
                  },
                  "returnParameters": {
                    "id": 2453,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2452,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2461,
                        "src": "9995:4:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2451,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "9995:4:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9994:6:19"
                  },
                  "scope": 3977,
                  "src": "9809:264:19",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1108,
                    4767
                  ],
                  "body": {
                    "id": 2477,
                    "nodeType": "Block",
                    "src": "10374:44:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2474,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2464,
                              "src": "10405:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 2472,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "10391:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_ERC1155721Inventory_$3977",
                                "typeString": "contract super ERC1155721Inventory"
                              }
                            },
                            "id": 2473,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "ownerOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1108,
                            "src": "10391:13:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (uint256) view returns (address)"
                            }
                          },
                          "id": 2475,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10391:20:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 2471,
                        "id": 2476,
                        "nodeType": "Return",
                        "src": "10384:27:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2462,
                    "nodeType": "StructuredDocumentation",
                    "src": "10210:36:19",
                    "text": "@inheritdoc IERC1155721Inventory"
                  },
                  "functionSelector": "6352211e",
                  "id": 2478,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ownerOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2468,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 2466,
                        "name": "IERC1155721Inventory",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4768,
                        "src": "10312:20:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155721Inventory_$4768",
                          "typeString": "contract IERC1155721Inventory"
                        }
                      },
                      {
                        "id": 2467,
                        "name": "ERC1155InventoryBase",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1299,
                        "src": "10334:20:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC1155InventoryBase_$1299",
                          "typeString": "contract ERC1155InventoryBase"
                        }
                      }
                    ],
                    "src": "10303:52:19"
                  },
                  "parameters": {
                    "id": 2465,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2464,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 2478,
                        "src": "10268:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2463,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10268:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10267:15:19"
                  },
                  "returnParameters": {
                    "id": 2471,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2470,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2478,
                        "src": "10365:7:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2469,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10365:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10364:9:19"
                  },
                  "scope": 3977,
                  "src": "10251:167:19",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2565,
                    "nodeType": "Block",
                    "src": "10996:588:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2498,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2493,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2483,
                                "src": "11014:2:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 2496,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11028:1:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 2495,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "11020:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2494,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11020:7:19",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2497,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11020:10:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "11014:16:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207472616e7366657220746f207a65726f",
                              "id": 2499,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11032:29:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0f91cf9f592889ad442a51e80a8626af0c0cbfd82b9e1961086f5191f456323b",
                                "typeString": "literal_string \"Inventory: transfer to zero\""
                              },
                              "value": "Inventory: transfer to zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0f91cf9f592889ad442a51e80a8626af0c0cbfd82b9e1961086f5191f456323b",
                                "typeString": "literal_string \"Inventory: transfer to zero\""
                              }
                            ],
                            "id": 2492,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "11006:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2500,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11006:56:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2501,
                        "nodeType": "ExpressionStatement",
                        "src": "11006:56:19"
                      },
                      {
                        "assignments": [
                          2503
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2503,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 2565,
                            "src": "11072:14:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2502,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "11072:7:19",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2506,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 2504,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 229,
                            "src": "11089:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 2505,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11089:12:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11072:29:19"
                      },
                      {
                        "assignments": [
                          2508
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2508,
                            "mutability": "mutable",
                            "name": "operatable",
                            "nodeType": "VariableDeclaration",
                            "scope": 2565,
                            "src": "11111:15:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 2507,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "11111:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2513,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2510,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2481,
                              "src": "11143:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2511,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2503,
                              "src": "11149:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2509,
                            "name": "_isOperatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1232,
                            "src": "11129:13:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view returns (bool)"
                            }
                          },
                          "id": 2512,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11129:27:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11111:45:19"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2515,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2481,
                              "src": "11180:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2516,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2483,
                              "src": "11186:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2517,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2485,
                              "src": "11190:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "31",
                              "id": 2518,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11197:1:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            {
                              "id": 2519,
                              "name": "operatable",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2508,
                              "src": "11200:10:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 2520,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11212:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 2514,
                            "name": "_transferNFT",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3843,
                            "src": "11167:12:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256,bool,bool)"
                            }
                          },
                          "id": 2521,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11167:51:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2522,
                        "nodeType": "ExpressionStatement",
                        "src": "11167:51:19"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 2524,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2481,
                              "src": "11243:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2525,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2483,
                              "src": "11249:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2526,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2485,
                              "src": "11253:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2523,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4645,
                            "src": "11234:8:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 2527,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11234:25:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2528,
                        "nodeType": "EmitStatement",
                        "src": "11229:30:19"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 2530,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2503,
                              "src": "11289:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2531,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2481,
                              "src": "11297:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2532,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2483,
                              "src": "11303:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2533,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2485,
                              "src": "11307:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "31",
                              "id": 2534,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11314:1:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              }
                            ],
                            "id": 2529,
                            "name": "TransferSingle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1396,
                            "src": "11274:14:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 2535,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11274:42:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2536,
                        "nodeType": "EmitStatement",
                        "src": "11269:47:19"
                      },
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 2537,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2483,
                              "src": "11330:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 2538,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 588,
                            "src": "11330:13:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 2539,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11330:15:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2564,
                        "nodeType": "IfStatement",
                        "src": "11326:252:19",
                        "trueBody": {
                          "id": 2563,
                          "nodeType": "Block",
                          "src": "11347:231:19",
                          "statements": [
                            {
                              "condition": {
                                "arguments": [
                                  {
                                    "id": 2541,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2483,
                                    "src": "11389:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 2540,
                                  "name": "_isERC1155TokenReceiver",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3944,
                                  "src": "11365:23:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                    "typeString": "function (address) view returns (bool)"
                                  }
                                },
                                "id": 2542,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11365:27:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "id": 2552,
                                  "name": "safe",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2489,
                                  "src": "11485:4:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 2561,
                                "nodeType": "IfStatement",
                                "src": "11481:87:19",
                                "trueBody": {
                                  "id": 2560,
                                  "nodeType": "Block",
                                  "src": "11491:77:19",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 2554,
                                            "name": "from",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2481,
                                            "src": "11531:4:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 2555,
                                            "name": "to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2483,
                                            "src": "11537:2:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 2556,
                                            "name": "nftId",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2485,
                                            "src": "11541:5:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 2557,
                                            "name": "data",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2487,
                                            "src": "11548:4:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "id": 2553,
                                          "name": "_callOnERC721Received",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3976,
                                          "src": "11509:21:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                            "typeString": "function (address,address,uint256,bytes memory)"
                                          }
                                        },
                                        "id": 2558,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "11509:44:19",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 2559,
                                      "nodeType": "ExpressionStatement",
                                      "src": "11509:44:19"
                                    }
                                  ]
                                }
                              },
                              "id": 2562,
                              "nodeType": "IfStatement",
                              "src": "11361:207:19",
                              "trueBody": {
                                "id": 2551,
                                "nodeType": "Block",
                                "src": "11394:81:19",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 2544,
                                          "name": "from",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2481,
                                          "src": "11435:4:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 2545,
                                          "name": "to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2483,
                                          "src": "11441:2:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 2546,
                                          "name": "nftId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2485,
                                          "src": "11445:5:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "hexValue": "31",
                                          "id": 2547,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "11452:1:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        {
                                          "id": 2548,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2487,
                                          "src": "11455:4:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "id": 2543,
                                        "name": "_callOnERC1155Received",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1264,
                                        "src": "11412:22:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                          "typeString": "function (address,address,uint256,uint256,bytes memory)"
                                        }
                                      },
                                      "id": 2549,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "11412:48:19",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 2550,
                                    "nodeType": "ExpressionStatement",
                                    "src": "11412:48:19"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2479,
                    "nodeType": "StructuredDocumentation",
                    "src": "10553:289:19",
                    "text": " Safely or unsafely transfers some token (ERC721-compatible).\n @dev For `safe` transfer, see {IERC1155721Inventory-transferFrom(address,address,uint256)}.\n @dev For un`safe` transfer, see {IERC1155721Inventory-safeTransferFrom(address,address,uint256,bytes)}."
                  },
                  "id": 2566,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2490,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2481,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 2566,
                        "src": "10879:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2480,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10879:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2483,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 2566,
                        "src": "10901:10:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2482,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10901:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2485,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 2566,
                        "src": "10921:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2484,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10921:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2487,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 2566,
                        "src": "10944:17:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2486,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "10944:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2489,
                        "mutability": "mutable",
                        "name": "safe",
                        "nodeType": "VariableDeclaration",
                        "scope": 2566,
                        "src": "10971:9:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2488,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "10971:4:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10869:117:19"
                  },
                  "returnParameters": {
                    "id": 2491,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10996:0:19"
                  },
                  "scope": 3977,
                  "src": "10847:737:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2779,
                    "nodeType": "Block",
                    "src": "11954:1964:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2588,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2583,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2571,
                                "src": "11972:2:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 2586,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11986:1:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 2585,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "11978:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2584,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11978:7:19",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2587,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11978:10:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "11972:16:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207472616e7366657220746f207a65726f",
                              "id": 2589,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11990:29:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0f91cf9f592889ad442a51e80a8626af0c0cbfd82b9e1961086f5191f456323b",
                                "typeString": "literal_string \"Inventory: transfer to zero\""
                              },
                              "value": "Inventory: transfer to zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0f91cf9f592889ad442a51e80a8626af0c0cbfd82b9e1961086f5191f456323b",
                                "typeString": "literal_string \"Inventory: transfer to zero\""
                              }
                            ],
                            "id": 2582,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "11964:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2590,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11964:56:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2591,
                        "nodeType": "ExpressionStatement",
                        "src": "11964:56:19"
                      },
                      {
                        "assignments": [
                          2593
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2593,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 2779,
                            "src": "12030:14:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2592,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12030:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2596,
                        "initialValue": {
                          "expression": {
                            "id": 2594,
                            "name": "ids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2574,
                            "src": "12047:3:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 2595,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "12047:10:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12030:27:19"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2601,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2598,
                                "name": "length",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2593,
                                "src": "12075:6:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 2599,
                                  "name": "values",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2577,
                                  "src": "12085:6:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 2600,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "12085:13:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12075:23:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a20696e636f6e73697374656e7420617272617973",
                              "id": 2602,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12100:32:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7a126caadb5177dc3b65272d4b18471177661f27977eda64cf57724e2b12039b",
                                "typeString": "literal_string \"Inventory: inconsistent arrays\""
                              },
                              "value": "Inventory: inconsistent arrays"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7a126caadb5177dc3b65272d4b18471177661f27977eda64cf57724e2b12039b",
                                "typeString": "literal_string \"Inventory: inconsistent arrays\""
                              }
                            ],
                            "id": 2597,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "12067:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2603,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12067:66:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2604,
                        "nodeType": "ExpressionStatement",
                        "src": "12067:66:19"
                      },
                      {
                        "assignments": [
                          2606
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2606,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 2779,
                            "src": "12143:14:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2605,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "12143:7:19",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2609,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 2607,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 229,
                            "src": "12160:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 2608,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12160:12:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12143:29:19"
                      },
                      {
                        "assignments": [
                          2611
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2611,
                            "mutability": "mutable",
                            "name": "operatable",
                            "nodeType": "VariableDeclaration",
                            "scope": 2779,
                            "src": "12182:15:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 2610,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "12182:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2616,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2613,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2569,
                              "src": "12214:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2614,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2606,
                              "src": "12220:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2612,
                            "name": "_isOperatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1232,
                            "src": "12200:13:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view returns (bool)"
                            }
                          },
                          "id": 2615,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12200:27:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12182:45:19"
                      },
                      {
                        "assignments": [
                          2618
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2618,
                            "mutability": "mutable",
                            "name": "nfCollectionId",
                            "nodeType": "VariableDeclaration",
                            "scope": 2779,
                            "src": "12238:22:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2617,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12238:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2619,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12238:22:19"
                      },
                      {
                        "assignments": [
                          2621
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2621,
                            "mutability": "mutable",
                            "name": "nfCollectionCount",
                            "nodeType": "VariableDeclaration",
                            "scope": 2779,
                            "src": "12270:25:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2620,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12270:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2622,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12270:25:19"
                      },
                      {
                        "assignments": [
                          2624
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2624,
                            "mutability": "mutable",
                            "name": "nftsCount",
                            "nodeType": "VariableDeclaration",
                            "scope": 2779,
                            "src": "12305:17:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2623,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12305:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2625,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12305:17:19"
                      },
                      {
                        "body": {
                          "id": 2733,
                          "nodeType": "Block",
                          "src": "12366:1131:19",
                          "statements": [
                            {
                              "assignments": [
                                2636
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2636,
                                  "mutability": "mutable",
                                  "name": "id",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2733,
                                  "src": "12380:10:19",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2635,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12380:7:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2640,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 2637,
                                  "name": "ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2574,
                                  "src": "12393:3:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 2639,
                                "indexExpression": {
                                  "id": 2638,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2627,
                                  "src": "12397:1:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "12393:6:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12380:19:19"
                            },
                            {
                              "condition": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 2641,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2636,
                                    "src": "12417:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 2642,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "isFungibleToken",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1321,
                                  "src": "12417:18:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256) pure returns (bool)"
                                  }
                                },
                                "id": 2643,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12417:20:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "arguments": [
                                    {
                                      "id": 2657,
                                      "name": "_collectionMaskLength",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 771,
                                      "src": "12558:21:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 2655,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2636,
                                      "src": "12536:2:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2656,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "isNonFungibleToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1345,
                                    "src": "12536:21:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (bool)"
                                    }
                                  },
                                  "id": 2658,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12536:44:19",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "id": 2730,
                                  "nodeType": "Block",
                                  "src": "13419:68:19",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "hexValue": "496e76656e746f72793a206e6f74206120746f6b656e206964",
                                            "id": 2727,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "13444:27:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                              "typeString": "literal_string \"Inventory: not a token id\""
                                            },
                                            "value": "Inventory: not a token id"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                              "typeString": "literal_string \"Inventory: not a token id\""
                                            }
                                          ],
                                          "id": 2726,
                                          "name": "revert",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [
                                            -19,
                                            -19
                                          ],
                                          "referencedDeclaration": -19,
                                          "src": "13437:6:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                            "typeString": "function (string memory) pure"
                                          }
                                        },
                                        "id": 2728,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "13437:35:19",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 2729,
                                      "nodeType": "ExpressionStatement",
                                      "src": "13437:35:19"
                                    }
                                  ]
                                },
                                "id": 2731,
                                "nodeType": "IfStatement",
                                "src": "12532:955:19",
                                "trueBody": {
                                  "id": 2725,
                                  "nodeType": "Block",
                                  "src": "12582:831:19",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 2660,
                                            "name": "from",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2569,
                                            "src": "12613:4:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 2661,
                                            "name": "to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2571,
                                            "src": "12619:2:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 2662,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2636,
                                            "src": "12623:2:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "baseExpression": {
                                              "id": 2663,
                                              "name": "values",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2577,
                                              "src": "12627:6:19",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                "typeString": "uint256[] memory"
                                              }
                                            },
                                            "id": 2665,
                                            "indexExpression": {
                                              "id": 2664,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2627,
                                              "src": "12634:1:19",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "12627:9:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 2666,
                                            "name": "operatable",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2611,
                                            "src": "12638:10:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          {
                                            "hexValue": "74727565",
                                            "id": 2667,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "bool",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "12650:4:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            },
                                            "value": "true"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            },
                                            {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          ],
                                          "id": 2659,
                                          "name": "_transferNFT",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3843,
                                          "src": "12600:12:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$_t_bool_$returns$__$",
                                            "typeString": "function (address,address,uint256,uint256,bool,bool)"
                                          }
                                        },
                                        "id": 2668,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12600:55:19",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 2669,
                                      "nodeType": "ExpressionStatement",
                                      "src": "12600:55:19"
                                    },
                                    {
                                      "eventCall": {
                                        "arguments": [
                                          {
                                            "id": 2671,
                                            "name": "from",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2569,
                                            "src": "12687:4:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 2672,
                                            "name": "to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2571,
                                            "src": "12693:2:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 2673,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2636,
                                            "src": "12697:2:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 2670,
                                          "name": "Transfer",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4645,
                                          "src": "12678:8:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                            "typeString": "function (address,address,uint256)"
                                          }
                                        },
                                        "id": 2674,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12678:22:19",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 2675,
                                      "nodeType": "EmitStatement",
                                      "src": "12673:27:19"
                                    },
                                    {
                                      "assignments": [
                                        2677
                                      ],
                                      "declarations": [
                                        {
                                          "constant": false,
                                          "id": 2677,
                                          "mutability": "mutable",
                                          "name": "nextCollectionId",
                                          "nodeType": "VariableDeclaration",
                                          "scope": 2725,
                                          "src": "12718:24:19",
                                          "stateVariable": false,
                                          "storageLocation": "default",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "typeName": {
                                            "id": 2676,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "12718:7:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "visibility": "internal"
                                        }
                                      ],
                                      "id": 2682,
                                      "initialValue": {
                                        "arguments": [
                                          {
                                            "id": 2680,
                                            "name": "_collectionMaskLength",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 771,
                                            "src": "12773:21:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "id": 2678,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2636,
                                            "src": "12745:2:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 2679,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "getNonFungibleCollection",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 1362,
                                          "src": "12745:27:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 2681,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12745:50:19",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "VariableDeclarationStatement",
                                      "src": "12718:77:19"
                                    },
                                    {
                                      "condition": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 2685,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 2683,
                                          "name": "nfCollectionId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2618,
                                          "src": "12817:14:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "hexValue": "30",
                                          "id": 2684,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "12835:1:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "src": "12817:19:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "falseBody": {
                                        "id": 2723,
                                        "nodeType": "Block",
                                        "src": "12961:438:19",
                                        "statements": [
                                          {
                                            "condition": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 2697,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 2695,
                                                "name": "nextCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2677,
                                                "src": "12987:16:19",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "!=",
                                              "rightExpression": {
                                                "id": 2696,
                                                "name": "nfCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2618,
                                                "src": "13007:14:19",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "12987:34:19",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "falseBody": {
                                              "id": 2721,
                                              "nodeType": "Block",
                                              "src": "13313:68:19",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "id": 2719,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "UnaryOperation",
                                                    "operator": "++",
                                                    "prefix": true,
                                                    "src": "13339:19:19",
                                                    "subExpression": {
                                                      "id": 2718,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 2621,
                                                      "src": "13341:17:19",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 2720,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "13339:19:19"
                                                }
                                              ]
                                            },
                                            "id": 2722,
                                            "nodeType": "IfStatement",
                                            "src": "12983:398:19",
                                            "trueBody": {
                                              "id": 2717,
                                              "nodeType": "Block",
                                              "src": "13023:284:19",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "arguments": [
                                                      {
                                                        "id": 2699,
                                                        "name": "from",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2569,
                                                        "src": "13078:4:19",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      },
                                                      {
                                                        "id": 2700,
                                                        "name": "to",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2571,
                                                        "src": "13084:2:19",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      },
                                                      {
                                                        "id": 2701,
                                                        "name": "nfCollectionId",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2618,
                                                        "src": "13088:14:19",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      {
                                                        "id": 2702,
                                                        "name": "nfCollectionCount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2621,
                                                        "src": "13104:17:19",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      ],
                                                      "id": 2698,
                                                      "name": "_transferNFTUpdateCollection",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 3903,
                                                      "src": "13049:28:19",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                                        "typeString": "function (address,address,uint256,uint256)"
                                                      }
                                                    },
                                                    "id": 2703,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "13049:73:19",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_tuple$__$",
                                                      "typeString": "tuple()"
                                                    }
                                                  },
                                                  "id": 2704,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "13049:73:19"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 2707,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 2705,
                                                      "name": "nfCollectionId",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 2618,
                                                      "src": "13148:14:19",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                      "id": 2706,
                                                      "name": "nextCollectionId",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 2677,
                                                      "src": "13165:16:19",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "13148:33:19",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 2708,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "13148:33:19"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 2711,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 2709,
                                                      "name": "nftsCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 2624,
                                                      "src": "13207:9:19",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "+=",
                                                    "rightHandSide": {
                                                      "id": 2710,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 2621,
                                                      "src": "13220:17:19",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "13207:30:19",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 2712,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "13207:30:19"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 2715,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 2713,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 2621,
                                                      "src": "13263:17:19",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                      "hexValue": "31",
                                                      "id": 2714,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "13283:1:19",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_1_by_1",
                                                        "typeString": "int_const 1"
                                                      },
                                                      "value": "1"
                                                    },
                                                    "src": "13263:21:19",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 2716,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "13263:21:19"
                                                }
                                              ]
                                            }
                                          }
                                        ]
                                      },
                                      "id": 2724,
                                      "nodeType": "IfStatement",
                                      "src": "12813:586:19",
                                      "trueBody": {
                                        "id": 2694,
                                        "nodeType": "Block",
                                        "src": "12838:117:19",
                                        "statements": [
                                          {
                                            "expression": {
                                              "id": 2688,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "id": 2686,
                                                "name": "nfCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2618,
                                                "src": "12860:14:19",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "id": 2687,
                                                "name": "nextCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2677,
                                                "src": "12877:16:19",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "12860:33:19",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 2689,
                                            "nodeType": "ExpressionStatement",
                                            "src": "12860:33:19"
                                          },
                                          {
                                            "expression": {
                                              "id": 2692,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "id": 2690,
                                                "name": "nfCollectionCount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2621,
                                                "src": "12915:17:19",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "hexValue": "31",
                                                "id": 2691,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "12935:1:19",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_1_by_1",
                                                  "typeString": "int_const 1"
                                                },
                                                "value": "1"
                                              },
                                              "src": "12915:21:19",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 2693,
                                            "nodeType": "ExpressionStatement",
                                            "src": "12915:21:19"
                                          }
                                        ]
                                      }
                                    }
                                  ]
                                }
                              },
                              "id": 2732,
                              "nodeType": "IfStatement",
                              "src": "12413:1074:19",
                              "trueBody": {
                                "id": 2654,
                                "nodeType": "Block",
                                "src": "12439:87:19",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 2645,
                                          "name": "from",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2569,
                                          "src": "12475:4:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 2646,
                                          "name": "to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2571,
                                          "src": "12481:2:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 2647,
                                          "name": "id",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2636,
                                          "src": "12485:2:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "baseExpression": {
                                            "id": 2648,
                                            "name": "values",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2577,
                                            "src": "12489:6:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                              "typeString": "uint256[] memory"
                                            }
                                          },
                                          "id": 2650,
                                          "indexExpression": {
                                            "id": 2649,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2627,
                                            "src": "12496:1:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "12489:9:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 2651,
                                          "name": "operatable",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2611,
                                          "src": "12500:10:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        ],
                                        "id": 2644,
                                        "name": "_transferFungible",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3748,
                                        "src": "12457:17:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                                          "typeString": "function (address,address,uint256,uint256,bool)"
                                        }
                                      },
                                      "id": 2652,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "12457:54:19",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 2653,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12457:54:19"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2631,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2629,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2627,
                            "src": "12348:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 2630,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2593,
                            "src": "12353:6:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12348:11:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2734,
                        "initializationExpression": {
                          "assignments": [
                            2627
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 2627,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 2734,
                              "src": "12337:9:19",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 2626,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "12337:7:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 2628,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "12337:9:19"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 2633,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "12361:3:19",
                            "subExpression": {
                              "id": 2632,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2627,
                              "src": "12363:1:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2634,
                          "nodeType": "ExpressionStatement",
                          "src": "12361:3:19"
                        },
                        "nodeType": "ForStatement",
                        "src": "12332:1165:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2737,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2735,
                            "name": "nfCollectionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2618,
                            "src": "13511:14:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 2736,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13529:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "13511:19:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2756,
                        "nodeType": "IfStatement",
                        "src": "13507:228:19",
                        "trueBody": {
                          "id": 2755,
                          "nodeType": "Block",
                          "src": "13532:203:19",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2739,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2569,
                                    "src": "13575:4:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2740,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2571,
                                    "src": "13581:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2741,
                                    "name": "nfCollectionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2618,
                                    "src": "13585:14:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 2742,
                                    "name": "nfCollectionCount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2621,
                                    "src": "13601:17:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 2738,
                                  "name": "_transferNFTUpdateCollection",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3903,
                                  "src": "13546:28:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256,uint256)"
                                  }
                                },
                                "id": 2743,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13546:73:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2744,
                              "nodeType": "ExpressionStatement",
                              "src": "13546:73:19"
                            },
                            {
                              "expression": {
                                "id": 2747,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 2745,
                                  "name": "nftsCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2624,
                                  "src": "13633:9:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 2746,
                                  "name": "nfCollectionCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2621,
                                  "src": "13646:17:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13633:30:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2748,
                              "nodeType": "ExpressionStatement",
                              "src": "13633:30:19"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2750,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2569,
                                    "src": "13704:4:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2751,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2571,
                                    "src": "13710:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2752,
                                    "name": "nftsCount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2624,
                                    "src": "13714:9:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 2749,
                                  "name": "_transferNFTUpdateBalances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3870,
                                  "src": "13677:26:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 2753,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13677:47:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2754,
                              "nodeType": "ExpressionStatement",
                              "src": "13677:47:19"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 2758,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 229,
                                "src": "13764:10:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 2759,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13764:12:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 2760,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2569,
                              "src": "13778:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2761,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2571,
                              "src": "13784:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2762,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2574,
                              "src": "13788:3:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 2763,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2577,
                              "src": "13793:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 2757,
                            "name": "TransferBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1410,
                            "src": "13750:13:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 2764,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13750:50:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2765,
                        "nodeType": "EmitStatement",
                        "src": "13745:55:19"
                      },
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 2766,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2571,
                              "src": "13814:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 2767,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 588,
                            "src": "13814:13:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 2768,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13814:15:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2778,
                        "nodeType": "IfStatement",
                        "src": "13810:102:19",
                        "trueBody": {
                          "id": 2777,
                          "nodeType": "Block",
                          "src": "13831:81:19",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2770,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2569,
                                    "src": "13873:4:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2771,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2571,
                                    "src": "13879:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2772,
                                    "name": "ids",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2574,
                                    "src": "13883:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 2773,
                                    "name": "values",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2577,
                                    "src": "13888:6:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 2774,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2579,
                                    "src": "13896:4:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 2769,
                                  "name": "_callOnERC1155BatchReceived",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1298,
                                  "src": "13845:27:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory)"
                                  }
                                },
                                "id": 2775,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13845:56:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2776,
                              "nodeType": "ExpressionStatement",
                              "src": "13845:56:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2567,
                    "nodeType": "StructuredDocumentation",
                    "src": "11590:180:19",
                    "text": " Safely transfers a batch of tokens (ERC1155-compatible).\n @dev See {IERC1155721Inventory-safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)}."
                  },
                  "id": 2780,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_safeBatchTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2580,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2569,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 2780,
                        "src": "11816:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2568,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11816:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2571,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 2780,
                        "src": "11838:10:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2570,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11838:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2574,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 2780,
                        "src": "11858:20:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2572,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "11858:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2573,
                          "nodeType": "ArrayTypeName",
                          "src": "11858:9:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2577,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 2780,
                        "src": "11888:23:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2575,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "11888:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2576,
                          "nodeType": "ArrayTypeName",
                          "src": "11888:9:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2579,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 2780,
                        "src": "11921:17:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2578,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "11921:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11806:138:19"
                  },
                  "returnParameters": {
                    "id": 2581,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11954:0:19"
                  },
                  "scope": 3977,
                  "src": "11775:2143:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2872,
                    "nodeType": "Block",
                    "src": "14309:589:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2798,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2793,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2783,
                                "src": "14327:2:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 2796,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14341:1:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 2795,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "14333:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2794,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14333:7:19",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2797,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14333:10:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "14327:16:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206d696e7420746f207a65726f",
                              "id": 2799,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14345:25:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_2aa217cc40fce9df99cb009139c564411f21d5a0c84ae1e669a4fa9e1e0f03c2",
                                "typeString": "literal_string \"Inventory: mint to zero\""
                              },
                              "value": "Inventory: mint to zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_2aa217cc40fce9df99cb009139c564411f21d5a0c84ae1e669a4fa9e1e0f03c2",
                                "typeString": "literal_string \"Inventory: mint to zero\""
                              }
                            ],
                            "id": 2792,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "14319:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2800,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14319:52:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2801,
                        "nodeType": "ExpressionStatement",
                        "src": "14319:52:19"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 2805,
                                  "name": "_collectionMaskLength",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 771,
                                  "src": "14414:21:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 2803,
                                  "name": "nftId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2785,
                                  "src": "14389:5:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 2804,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isNonFungibleToken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1345,
                                "src": "14389:24:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (bool)"
                                }
                              },
                              "id": 2806,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14389:47:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f7420616e204e4654",
                              "id": 2807,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14438:23:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6f6b3072d8f66101f2906a615e7ccee3daa7b495817e174efdc83fec1dfaad68",
                                "typeString": "literal_string \"Inventory: not an NFT\""
                              },
                              "value": "Inventory: not an NFT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6f6b3072d8f66101f2906a615e7ccee3daa7b495817e174efdc83fec1dfaad68",
                                "typeString": "literal_string \"Inventory: not an NFT\""
                              }
                            ],
                            "id": 2802,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "14381:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2808,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14381:81:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2809,
                        "nodeType": "ExpressionStatement",
                        "src": "14381:81:19"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2811,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2783,
                              "src": "14482:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2812,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2785,
                              "src": "14486:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "31",
                              "id": 2813,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14493:1:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 2814,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14496:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 2810,
                            "name": "_mintNFT",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3684,
                            "src": "14473:8:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,uint256,bool)"
                            }
                          },
                          "id": 2815,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14473:29:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2816,
                        "nodeType": "ExpressionStatement",
                        "src": "14473:29:19"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 2820,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14535:1:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 2819,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "14527:7:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2818,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "14527:7:19",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 2821,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14527:10:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 2822,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2783,
                              "src": "14539:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2823,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2785,
                              "src": "14543:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2817,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4645,
                            "src": "14518:8:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 2824,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14518:31:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2825,
                        "nodeType": "EmitStatement",
                        "src": "14513:36:19"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 2827,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 229,
                                "src": "14579:10:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 2828,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14579:12:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 2831,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14601:1:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 2830,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "14593:7:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2829,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "14593:7:19",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 2832,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14593:10:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 2833,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2783,
                              "src": "14605:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2834,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2785,
                              "src": "14609:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "31",
                              "id": 2835,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14616:1:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              }
                            ],
                            "id": 2826,
                            "name": "TransferSingle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1396,
                            "src": "14564:14:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 2836,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14564:54:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2837,
                        "nodeType": "EmitStatement",
                        "src": "14559:59:19"
                      },
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 2838,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2783,
                              "src": "14632:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 2839,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 588,
                            "src": "14632:13:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 2840,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14632:15:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2871,
                        "nodeType": "IfStatement",
                        "src": "14628:264:19",
                        "trueBody": {
                          "id": 2870,
                          "nodeType": "Block",
                          "src": "14649:243:19",
                          "statements": [
                            {
                              "condition": {
                                "arguments": [
                                  {
                                    "id": 2842,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2783,
                                    "src": "14691:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 2841,
                                  "name": "_isERC1155TokenReceiver",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3944,
                                  "src": "14667:23:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                    "typeString": "function (address) view returns (bool)"
                                  }
                                },
                                "id": 2843,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14667:27:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "id": 2856,
                                  "name": "safe",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2789,
                                  "src": "14793:4:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 2868,
                                "nodeType": "IfStatement",
                                "src": "14789:93:19",
                                "trueBody": {
                                  "id": 2867,
                                  "nodeType": "Block",
                                  "src": "14799:83:19",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "hexValue": "30",
                                                "id": 2860,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "14847:1:19",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_0_by_1",
                                                  "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_rational_0_by_1",
                                                  "typeString": "int_const 0"
                                                }
                                              ],
                                              "id": 2859,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "14839:7:19",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                              },
                                              "typeName": {
                                                "id": 2858,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "14839:7:19",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 2861,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "14839:10:19",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address_payable",
                                              "typeString": "address payable"
                                            }
                                          },
                                          {
                                            "id": 2862,
                                            "name": "to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2783,
                                            "src": "14851:2:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 2863,
                                            "name": "nftId",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2785,
                                            "src": "14855:5:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 2864,
                                            "name": "data",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2787,
                                            "src": "14862:4:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address_payable",
                                              "typeString": "address payable"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "id": 2857,
                                          "name": "_callOnERC721Received",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3976,
                                          "src": "14817:21:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                            "typeString": "function (address,address,uint256,bytes memory)"
                                          }
                                        },
                                        "id": 2865,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "14817:50:19",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 2866,
                                      "nodeType": "ExpressionStatement",
                                      "src": "14817:50:19"
                                    }
                                  ]
                                }
                              },
                              "id": 2869,
                              "nodeType": "IfStatement",
                              "src": "14663:219:19",
                              "trueBody": {
                                "id": 2855,
                                "nodeType": "Block",
                                "src": "14696:87:19",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "hexValue": "30",
                                              "id": 2847,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "14745:1:19",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                              },
                                              "value": "0"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                              }
                                            ],
                                            "id": 2846,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "14737:7:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_address_$",
                                              "typeString": "type(address)"
                                            },
                                            "typeName": {
                                              "id": 2845,
                                              "name": "address",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "14737:7:19",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 2848,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "14737:10:19",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          }
                                        },
                                        {
                                          "id": 2849,
                                          "name": "to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2783,
                                          "src": "14749:2:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 2850,
                                          "name": "nftId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2785,
                                          "src": "14753:5:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "hexValue": "31",
                                          "id": 2851,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "14760:1:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        {
                                          "id": 2852,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2787,
                                          "src": "14763:4:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "id": 2844,
                                        "name": "_callOnERC1155Received",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1264,
                                        "src": "14714:22:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                          "typeString": "function (address,address,uint256,uint256,bytes memory)"
                                        }
                                      },
                                      "id": 2853,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "14714:54:19",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 2854,
                                    "nodeType": "ExpressionStatement",
                                    "src": "14714:54:19"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2781,
                    "nodeType": "StructuredDocumentation",
                    "src": "13924:261:19",
                    "text": " Safely or unsafely mints some token (ERC721-compatible).\n @dev For `safe` mint, see {IERC1155721InventoryMintable-mint(address,uint256)}.\n @dev For un`safe` mint, see {IERC1155721InventoryMintable-safeMint(address,uint256,bytes)}."
                  },
                  "id": 2873,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2790,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2783,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 2873,
                        "src": "14214:10:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2782,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14214:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2785,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 2873,
                        "src": "14234:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2784,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14234:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2787,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 2873,
                        "src": "14257:17:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2786,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "14257:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2789,
                        "mutability": "mutable",
                        "name": "safe",
                        "nodeType": "VariableDeclaration",
                        "scope": 2873,
                        "src": "14284:9:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2788,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "14284:4:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14204:95:19"
                  },
                  "returnParameters": {
                    "id": 2791,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14309:0:19"
                  },
                  "scope": 3977,
                  "src": "14190:708:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3065,
                    "nodeType": "Block",
                    "src": "15137:1557:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2888,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2883,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2876,
                                "src": "15155:2:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 2886,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15169:1:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 2885,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "15161:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2884,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15161:7:19",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2887,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15161:10:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "15155:16:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206d696e7420746f207a65726f",
                              "id": 2889,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15173:25:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_2aa217cc40fce9df99cb009139c564411f21d5a0c84ae1e669a4fa9e1e0f03c2",
                                "typeString": "literal_string \"Inventory: mint to zero\""
                              },
                              "value": "Inventory: mint to zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_2aa217cc40fce9df99cb009139c564411f21d5a0c84ae1e669a4fa9e1e0f03c2",
                                "typeString": "literal_string \"Inventory: mint to zero\""
                              }
                            ],
                            "id": 2882,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "15147:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2890,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15147:52:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2891,
                        "nodeType": "ExpressionStatement",
                        "src": "15147:52:19"
                      },
                      {
                        "assignments": [
                          2893
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2893,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 3065,
                            "src": "15210:14:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2892,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15210:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2896,
                        "initialValue": {
                          "expression": {
                            "id": 2894,
                            "name": "nftIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2879,
                            "src": "15227:6:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 2895,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "15227:13:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15210:30:19"
                      },
                      {
                        "assignments": [
                          2901
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2901,
                            "mutability": "mutable",
                            "name": "values",
                            "nodeType": "VariableDeclaration",
                            "scope": 3065,
                            "src": "15250:23:19",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 2899,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "15250:7:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2900,
                              "nodeType": "ArrayTypeName",
                              "src": "15250:9:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2907,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2905,
                              "name": "length",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2893,
                              "src": "15290:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2904,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "15276:13:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 2902,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "15280:7:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2903,
                              "nodeType": "ArrayTypeName",
                              "src": "15280:9:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 2906,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15276:21:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15250:47:19"
                      },
                      {
                        "assignments": [
                          2909
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2909,
                            "mutability": "mutable",
                            "name": "nfCollectionId",
                            "nodeType": "VariableDeclaration",
                            "scope": 3065,
                            "src": "15308:22:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2908,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15308:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2910,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15308:22:19"
                      },
                      {
                        "assignments": [
                          2912
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2912,
                            "mutability": "mutable",
                            "name": "nfCollectionCount",
                            "nodeType": "VariableDeclaration",
                            "scope": 3065,
                            "src": "15340:25:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2911,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15340:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2913,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15340:25:19"
                      },
                      {
                        "body": {
                          "id": 3011,
                          "nodeType": "Block",
                          "src": "15409:902:19",
                          "statements": [
                            {
                              "assignments": [
                                2924
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2924,
                                  "mutability": "mutable",
                                  "name": "nftId",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3011,
                                  "src": "15423:13:19",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2923,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15423:7:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2928,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 2925,
                                  "name": "nftIds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2879,
                                  "src": "15439:6:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 2927,
                                "indexExpression": {
                                  "id": 2926,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2915,
                                  "src": "15446:1:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "15439:9:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15423:25:19"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 2932,
                                        "name": "_collectionMaskLength",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 771,
                                        "src": "15495:21:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "id": 2930,
                                        "name": "nftId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2924,
                                        "src": "15470:5:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 2931,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "isNonFungibleToken",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1345,
                                      "src": "15470:24:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (bool)"
                                      }
                                    },
                                    "id": 2933,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "15470:47:19",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "496e76656e746f72793a206e6f7420616e204e4654",
                                    "id": 2934,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15519:23:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_6f6b3072d8f66101f2906a615e7ccee3daa7b495817e174efdc83fec1dfaad68",
                                      "typeString": "literal_string \"Inventory: not an NFT\""
                                    },
                                    "value": "Inventory: not an NFT"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_6f6b3072d8f66101f2906a615e7ccee3daa7b495817e174efdc83fec1dfaad68",
                                      "typeString": "literal_string \"Inventory: not an NFT\""
                                    }
                                  ],
                                  "id": 2929,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "15462:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 2935,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15462:81:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2936,
                              "nodeType": "ExpressionStatement",
                              "src": "15462:81:19"
                            },
                            {
                              "expression": {
                                "id": 2941,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 2937,
                                    "name": "values",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2901,
                                    "src": "15557:6:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 2939,
                                  "indexExpression": {
                                    "id": 2938,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2915,
                                    "src": "15564:1:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "15557:9:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "31",
                                  "id": 2940,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15569:1:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "15557:13:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2942,
                              "nodeType": "ExpressionStatement",
                              "src": "15557:13:19"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2944,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2876,
                                    "src": "15593:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2945,
                                    "name": "nftId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2924,
                                    "src": "15597:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "hexValue": "31",
                                    "id": 2946,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15604:1:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  {
                                    "hexValue": "74727565",
                                    "id": 2947,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15607:4:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "true"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 2943,
                                  "name": "_mintNFT",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3684,
                                  "src": "15584:8:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                                    "typeString": "function (address,uint256,uint256,bool)"
                                  }
                                },
                                "id": 2948,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15584:28:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2949,
                              "nodeType": "ExpressionStatement",
                              "src": "15584:28:19"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 2953,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "15648:1:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 2952,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "15640:7:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 2951,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "15640:7:19",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 2954,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "15640:10:19",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 2955,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2876,
                                    "src": "15652:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2956,
                                    "name": "nftId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2924,
                                    "src": "15656:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 2950,
                                  "name": "Transfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4645,
                                  "src": "15631:8:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 2957,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15631:31:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2958,
                              "nodeType": "EmitStatement",
                              "src": "15626:36:19"
                            },
                            {
                              "assignments": [
                                2960
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2960,
                                  "mutability": "mutable",
                                  "name": "nextCollectionId",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3011,
                                  "src": "15676:24:19",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2959,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15676:7:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2965,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 2963,
                                    "name": "_collectionMaskLength",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 771,
                                    "src": "15734:21:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 2961,
                                    "name": "nftId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2924,
                                    "src": "15703:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 2962,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getNonFungibleCollection",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1362,
                                  "src": "15703:30:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 2964,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15703:53:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15676:80:19"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2968,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 2966,
                                  "name": "nfCollectionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2909,
                                  "src": "15774:14:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 2967,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15792:1:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "15774:19:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 3009,
                                "nodeType": "Block",
                                "src": "15906:395:19",
                                "statements": [
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 2980,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 2978,
                                        "name": "nextCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2960,
                                        "src": "15928:16:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "!=",
                                      "rightExpression": {
                                        "id": 2979,
                                        "name": "nfCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2909,
                                        "src": "15948:14:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "15928:34:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "id": 3007,
                                      "nodeType": "Block",
                                      "src": "16227:60:19",
                                      "statements": [
                                        {
                                          "expression": {
                                            "id": 3005,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "UnaryOperation",
                                            "operator": "++",
                                            "prefix": true,
                                            "src": "16249:19:19",
                                            "subExpression": {
                                              "id": 3004,
                                              "name": "nfCollectionCount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2912,
                                              "src": "16251:17:19",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 3006,
                                          "nodeType": "ExpressionStatement",
                                          "src": "16249:19:19"
                                        }
                                      ]
                                    },
                                    "id": 3008,
                                    "nodeType": "IfStatement",
                                    "src": "15924:363:19",
                                    "trueBody": {
                                      "id": 3003,
                                      "nodeType": "Block",
                                      "src": "15964:257:19",
                                      "statements": [
                                        {
                                          "expression": {
                                            "id": 2987,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "baseExpression": {
                                                "baseExpression": {
                                                  "id": 2981,
                                                  "name": "_balances",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 792,
                                                  "src": "15986:9:19",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                    "typeString": "mapping(uint256 => mapping(address => uint256))"
                                                  }
                                                },
                                                "id": 2984,
                                                "indexExpression": {
                                                  "id": 2982,
                                                  "name": "nfCollectionId",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 2909,
                                                  "src": "15996:14:19",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "15986:25:19",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                  "typeString": "mapping(address => uint256)"
                                                }
                                              },
                                              "id": 2985,
                                              "indexExpression": {
                                                "id": 2983,
                                                "name": "to",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2876,
                                                "src": "16012:2:19",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "nodeType": "IndexAccess",
                                              "src": "15986:29:19",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "+=",
                                            "rightHandSide": {
                                              "id": 2986,
                                              "name": "nfCollectionCount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2912,
                                              "src": "16019:17:19",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "15986:50:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 2988,
                                          "nodeType": "ExpressionStatement",
                                          "src": "15986:50:19"
                                        },
                                        {
                                          "expression": {
                                            "id": 2993,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "baseExpression": {
                                                "id": 2989,
                                                "name": "_supplies",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 796,
                                                "src": "16058:9:19",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                                  "typeString": "mapping(uint256 => uint256)"
                                                }
                                              },
                                              "id": 2991,
                                              "indexExpression": {
                                                "id": 2990,
                                                "name": "nfCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2909,
                                                "src": "16068:14:19",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "nodeType": "IndexAccess",
                                              "src": "16058:25:19",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "+=",
                                            "rightHandSide": {
                                              "id": 2992,
                                              "name": "nfCollectionCount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2912,
                                              "src": "16087:17:19",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "16058:46:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 2994,
                                          "nodeType": "ExpressionStatement",
                                          "src": "16058:46:19"
                                        },
                                        {
                                          "expression": {
                                            "id": 2997,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 2995,
                                              "name": "nfCollectionId",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2909,
                                              "src": "16126:14:19",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "id": 2996,
                                              "name": "nextCollectionId",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2960,
                                              "src": "16143:16:19",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "16126:33:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 2998,
                                          "nodeType": "ExpressionStatement",
                                          "src": "16126:33:19"
                                        },
                                        {
                                          "expression": {
                                            "id": 3001,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 2999,
                                              "name": "nfCollectionCount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2912,
                                              "src": "16181:17:19",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "hexValue": "31",
                                              "id": 3000,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "16201:1:19",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_1_by_1",
                                                "typeString": "int_const 1"
                                              },
                                              "value": "1"
                                            },
                                            "src": "16181:21:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 3002,
                                          "nodeType": "ExpressionStatement",
                                          "src": "16181:21:19"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              "id": 3010,
                              "nodeType": "IfStatement",
                              "src": "15770:531:19",
                              "trueBody": {
                                "id": 2977,
                                "nodeType": "Block",
                                "src": "15795:105:19",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 2971,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 2969,
                                        "name": "nfCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2909,
                                        "src": "15813:14:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "id": 2970,
                                        "name": "nextCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2960,
                                        "src": "15830:16:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "15813:33:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2972,
                                    "nodeType": "ExpressionStatement",
                                    "src": "15813:33:19"
                                  },
                                  {
                                    "expression": {
                                      "id": 2975,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 2973,
                                        "name": "nfCollectionCount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2912,
                                        "src": "15864:17:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "hexValue": "31",
                                        "id": 2974,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "15884:1:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "15864:21:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2976,
                                    "nodeType": "ExpressionStatement",
                                    "src": "15864:21:19"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2919,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2917,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2915,
                            "src": "15391:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 2918,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2893,
                            "src": "15396:6:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15391:11:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3012,
                        "initializationExpression": {
                          "assignments": [
                            2915
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 2915,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 3012,
                              "src": "15380:9:19",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 2914,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "15380:7:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 2916,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "15380:9:19"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 2921,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "15404:3:19",
                            "subExpression": {
                              "id": 2920,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2915,
                              "src": "15406:1:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2922,
                          "nodeType": "ExpressionStatement",
                          "src": "15404:3:19"
                        },
                        "nodeType": "ForStatement",
                        "src": "15375:936:19"
                      },
                      {
                        "expression": {
                          "id": 3019,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 3013,
                                "name": "_balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 792,
                                "src": "16321:9:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(address => uint256))"
                                }
                              },
                              "id": 3016,
                              "indexExpression": {
                                "id": 3014,
                                "name": "nfCollectionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2909,
                                "src": "16331:14:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "16321:25:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 3017,
                            "indexExpression": {
                              "id": 3015,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2876,
                              "src": "16347:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "16321:29:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 3018,
                            "name": "nfCollectionCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2912,
                            "src": "16354:17:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16321:50:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3020,
                        "nodeType": "ExpressionStatement",
                        "src": "16321:50:19"
                      },
                      {
                        "expression": {
                          "id": 3025,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 3021,
                              "name": "_supplies",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 796,
                              "src": "16381:9:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 3023,
                            "indexExpression": {
                              "id": 3022,
                              "name": "nfCollectionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2909,
                              "src": "16391:14:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "16381:25:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 3024,
                            "name": "nfCollectionCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2912,
                            "src": "16410:17:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16381:46:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3026,
                        "nodeType": "ExpressionStatement",
                        "src": "16381:46:19"
                      },
                      {
                        "expression": {
                          "id": 3031,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 3027,
                              "name": "_nftBalances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1750,
                              "src": "16437:12:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 3029,
                            "indexExpression": {
                              "id": 3028,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2876,
                              "src": "16450:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "16437:16:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 3030,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2893,
                            "src": "16457:6:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16437:26:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3032,
                        "nodeType": "ExpressionStatement",
                        "src": "16437:26:19"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 3034,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 229,
                                "src": "16493:10:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 3035,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16493:12:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 3038,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16515:1:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 3037,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "16507:7:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 3036,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "16507:7:19",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 3039,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16507:10:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 3040,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2876,
                              "src": "16519:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3041,
                              "name": "nftIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2879,
                              "src": "16523:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 3042,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2901,
                              "src": "16531:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 3033,
                            "name": "TransferBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1410,
                            "src": "16479:13:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 3043,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16479:59:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3044,
                        "nodeType": "EmitStatement",
                        "src": "16474:64:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 3051,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 3045,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2876,
                                "src": "16552:2:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 3046,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "isContract",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 588,
                              "src": "16552:13:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                                "typeString": "function (address) view returns (bool)"
                              }
                            },
                            "id": 3047,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16552:15:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 3049,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2876,
                                "src": "16595:2:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 3048,
                              "name": "_isERC1155TokenReceiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3944,
                              "src": "16571:23:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                "typeString": "function (address) view returns (bool)"
                              }
                            },
                            "id": 3050,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16571:27:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "16552:46:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3064,
                        "nodeType": "IfStatement",
                        "src": "16548:140:19",
                        "trueBody": {
                          "id": 3063,
                          "nodeType": "Block",
                          "src": "16600:88:19",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 3055,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "16650:1:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 3054,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "16642:7:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 3053,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "16642:7:19",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 3056,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "16642:10:19",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 3057,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2876,
                                    "src": "16654:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 3058,
                                    "name": "nftIds",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2879,
                                    "src": "16658:6:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 3059,
                                    "name": "values",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2901,
                                    "src": "16666:6:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "hexValue": "",
                                    "id": 3060,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "16674:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                      "typeString": "literal_string \"\""
                                    },
                                    "value": ""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                      "typeString": "literal_string \"\""
                                    }
                                  ],
                                  "id": 3052,
                                  "name": "_callOnERC1155BatchReceived",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1298,
                                  "src": "16614:27:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory)"
                                  }
                                },
                                "id": 3061,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16614:63:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3062,
                              "nodeType": "ExpressionStatement",
                              "src": "16614:63:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2874,
                    "nodeType": "StructuredDocumentation",
                    "src": "14904:162:19",
                    "text": " Unsafely mints a batch of Non-Fungible Tokens (ERC721-compatible).\n @dev See {IERC1155721InventoryMintable-batchMint(address,uint256[])}."
                  },
                  "id": 3066,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_batchMint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2880,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2876,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 3066,
                        "src": "15091:10:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2875,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15091:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2879,
                        "mutability": "mutable",
                        "name": "nftIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 3066,
                        "src": "15103:23:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2877,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "15103:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2878,
                          "nodeType": "ArrayTypeName",
                          "src": "15103:9:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15090:37:19"
                  },
                  "returnParameters": {
                    "id": 2881,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15137:0:19"
                  },
                  "scope": 3977,
                  "src": "15071:1623:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3158,
                    "nodeType": "Block",
                    "src": "16989:595:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3084,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3079,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3069,
                                "src": "17007:2:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 3082,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "17021:1:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 3081,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "17013:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3080,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "17013:7:19",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 3083,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17013:10:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "17007:16:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206d696e7420746f207a65726f",
                              "id": 3085,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17025:25:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_2aa217cc40fce9df99cb009139c564411f21d5a0c84ae1e669a4fa9e1e0f03c2",
                                "typeString": "literal_string \"Inventory: mint to zero\""
                              },
                              "value": "Inventory: mint to zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_2aa217cc40fce9df99cb009139c564411f21d5a0c84ae1e669a4fa9e1e0f03c2",
                                "typeString": "literal_string \"Inventory: mint to zero\""
                              }
                            ],
                            "id": 3078,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "16999:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3086,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16999:52:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3087,
                        "nodeType": "ExpressionStatement",
                        "src": "16999:52:19"
                      },
                      {
                        "assignments": [
                          3089
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3089,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 3158,
                            "src": "17061:14:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 3088,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "17061:7:19",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3092,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 3090,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 229,
                            "src": "17078:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 3091,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17078:12:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17061:29:19"
                      },
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 3093,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3071,
                              "src": "17104:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3094,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isFungibleToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1321,
                            "src": "17104:18:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (bool)"
                            }
                          },
                          "id": 3095,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17104:20:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "arguments": [
                              {
                                "id": 3105,
                                "name": "_collectionMaskLength",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 771,
                                "src": "17211:21:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 3103,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3071,
                                "src": "17189:2:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3104,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "isNonFungibleToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1345,
                              "src": "17189:21:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (bool)"
                              }
                            },
                            "id": 3106,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17189:44:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 3128,
                            "nodeType": "Block",
                            "src": "17343:60:19",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "hexValue": "496e76656e746f72793a206e6f74206120746f6b656e206964",
                                      "id": 3125,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "17364:27:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                        "typeString": "literal_string \"Inventory: not a token id\""
                                      },
                                      "value": "Inventory: not a token id"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                        "typeString": "literal_string \"Inventory: not a token id\""
                                      }
                                    ],
                                    "id": 3124,
                                    "name": "revert",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      -19,
                                      -19
                                    ],
                                    "referencedDeclaration": -19,
                                    "src": "17357:6:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                      "typeString": "function (string memory) pure"
                                    }
                                  },
                                  "id": 3126,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "17357:35:19",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 3127,
                                "nodeType": "ExpressionStatement",
                                "src": "17357:35:19"
                              }
                            ]
                          },
                          "id": 3129,
                          "nodeType": "IfStatement",
                          "src": "17185:218:19",
                          "trueBody": {
                            "id": 3123,
                            "nodeType": "Block",
                            "src": "17235:102:19",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 3108,
                                      "name": "to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3069,
                                      "src": "17258:2:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 3109,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3071,
                                      "src": "17262:2:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 3110,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3073,
                                      "src": "17266:5:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "hexValue": "66616c7365",
                                      "id": 3111,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "17273:5:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "id": 3107,
                                    "name": "_mintNFT",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3684,
                                    "src": "17249:8:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                                      "typeString": "function (address,uint256,uint256,bool)"
                                    }
                                  },
                                  "id": 3112,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "17249:30:19",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 3113,
                                "nodeType": "ExpressionStatement",
                                "src": "17249:30:19"
                              },
                              {
                                "eventCall": {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "hexValue": "30",
                                          "id": 3117,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "17315:1:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          }
                                        ],
                                        "id": 3116,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "17307:7:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 3115,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "17307:7:19",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 3118,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "17307:10:19",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    {
                                      "id": 3119,
                                      "name": "to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3069,
                                      "src": "17319:2:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 3120,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3071,
                                      "src": "17323:2:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 3114,
                                    "name": "Transfer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4645,
                                    "src": "17298:8:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                      "typeString": "function (address,address,uint256)"
                                    }
                                  },
                                  "id": 3121,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "17298:28:19",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 3122,
                                "nodeType": "EmitStatement",
                                "src": "17293:33:19"
                              }
                            ]
                          }
                        },
                        "id": 3130,
                        "nodeType": "IfStatement",
                        "src": "17100:303:19",
                        "trueBody": {
                          "id": 3102,
                          "nodeType": "Block",
                          "src": "17126:53:19",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3097,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3069,
                                    "src": "17154:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 3098,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3071,
                                    "src": "17158:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 3099,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3073,
                                    "src": "17162:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 3096,
                                  "name": "_mintFungible",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3616,
                                  "src": "17140:13:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256)"
                                  }
                                },
                                "id": 3100,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17140:28:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3101,
                              "nodeType": "ExpressionStatement",
                              "src": "17140:28:19"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 3132,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3089,
                              "src": "17433:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 3135,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "17449:1:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 3134,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "17441:7:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 3133,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "17441:7:19",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 3136,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17441:10:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 3137,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3069,
                              "src": "17453:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3138,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3071,
                              "src": "17457:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 3139,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3073,
                              "src": "17461:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3131,
                            "name": "TransferSingle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1396,
                            "src": "17418:14:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 3140,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17418:49:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3141,
                        "nodeType": "EmitStatement",
                        "src": "17413:54:19"
                      },
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 3142,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3069,
                              "src": "17481:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 3143,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 588,
                            "src": "17481:13:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 3144,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17481:15:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3157,
                        "nodeType": "IfStatement",
                        "src": "17477:101:19",
                        "trueBody": {
                          "id": 3156,
                          "nodeType": "Block",
                          "src": "17498:80:19",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 3148,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "17543:1:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 3147,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "17535:7:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 3146,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "17535:7:19",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 3149,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "17535:10:19",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 3150,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3069,
                                    "src": "17547:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 3151,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3071,
                                    "src": "17551:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 3152,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3073,
                                    "src": "17555:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 3153,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3075,
                                    "src": "17562:4:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 3145,
                                  "name": "_callOnERC1155Received",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1264,
                                  "src": "17512:22:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,uint256,uint256,bytes memory)"
                                  }
                                },
                                "id": 3154,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17512:55:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3155,
                              "nodeType": "ExpressionStatement",
                              "src": "17512:55:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3067,
                    "nodeType": "StructuredDocumentation",
                    "src": "16700:152:19",
                    "text": " Safely mints some token (ERC1155-compatible).\n @dev See {IERC1155721InventoryMintable-safeMint(address,uint256,uint256,bytes)}."
                  },
                  "id": 3159,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_safeMint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3076,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3069,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 3159,
                        "src": "16885:10:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3068,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16885:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3071,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 3159,
                        "src": "16905:10:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3070,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16905:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3073,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 3159,
                        "src": "16925:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3072,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16925:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3075,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 3159,
                        "src": "16948:17:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3074,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "16948:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16875:96:19"
                  },
                  "returnParameters": {
                    "id": 3077,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "16989:0:19"
                  },
                  "scope": 3977,
                  "src": "16857:727:19",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3379,
                    "nodeType": "Block",
                    "src": "17920:1939:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3179,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3174,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3162,
                                "src": "17938:2:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 3177,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "17952:1:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 3176,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "17944:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3175,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "17944:7:19",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 3178,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17944:10:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "17938:16:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206d696e7420746f207a65726f",
                              "id": 3180,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17956:25:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_2aa217cc40fce9df99cb009139c564411f21d5a0c84ae1e669a4fa9e1e0f03c2",
                                "typeString": "literal_string \"Inventory: mint to zero\""
                              },
                              "value": "Inventory: mint to zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_2aa217cc40fce9df99cb009139c564411f21d5a0c84ae1e669a4fa9e1e0f03c2",
                                "typeString": "literal_string \"Inventory: mint to zero\""
                              }
                            ],
                            "id": 3173,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "17930:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3181,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17930:52:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3182,
                        "nodeType": "ExpressionStatement",
                        "src": "17930:52:19"
                      },
                      {
                        "assignments": [
                          3184
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3184,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 3379,
                            "src": "17992:14:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3183,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17992:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3187,
                        "initialValue": {
                          "expression": {
                            "id": 3185,
                            "name": "ids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3165,
                            "src": "18009:3:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 3186,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "18009:10:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17992:27:19"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3192,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3189,
                                "name": "length",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3184,
                                "src": "18037:6:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 3190,
                                  "name": "values",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3168,
                                  "src": "18047:6:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 3191,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "18047:13:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "18037:23:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a20696e636f6e73697374656e7420617272617973",
                              "id": 3193,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18062:32:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7a126caadb5177dc3b65272d4b18471177661f27977eda64cf57724e2b12039b",
                                "typeString": "literal_string \"Inventory: inconsistent arrays\""
                              },
                              "value": "Inventory: inconsistent arrays"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7a126caadb5177dc3b65272d4b18471177661f27977eda64cf57724e2b12039b",
                                "typeString": "literal_string \"Inventory: inconsistent arrays\""
                              }
                            ],
                            "id": 3188,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "18029:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3194,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18029:66:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3195,
                        "nodeType": "ExpressionStatement",
                        "src": "18029:66:19"
                      },
                      {
                        "assignments": [
                          3197
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3197,
                            "mutability": "mutable",
                            "name": "nfCollectionId",
                            "nodeType": "VariableDeclaration",
                            "scope": 3379,
                            "src": "18106:22:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3196,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "18106:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3198,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18106:22:19"
                      },
                      {
                        "assignments": [
                          3200
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3200,
                            "mutability": "mutable",
                            "name": "nfCollectionCount",
                            "nodeType": "VariableDeclaration",
                            "scope": 3379,
                            "src": "18138:25:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3199,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "18138:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3201,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18138:25:19"
                      },
                      {
                        "assignments": [
                          3203
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3203,
                            "mutability": "mutable",
                            "name": "nftsCount",
                            "nodeType": "VariableDeclaration",
                            "scope": 3379,
                            "src": "18173:17:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3202,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "18173:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3204,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18173:17:19"
                      },
                      {
                        "body": {
                          "id": 3320,
                          "nodeType": "Block",
                          "src": "18234:1173:19",
                          "statements": [
                            {
                              "assignments": [
                                3215
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3215,
                                  "mutability": "mutable",
                                  "name": "id",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3320,
                                  "src": "18248:10:19",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 3214,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "18248:7:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3219,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 3216,
                                  "name": "ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3165,
                                  "src": "18261:3:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 3218,
                                "indexExpression": {
                                  "id": 3217,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3206,
                                  "src": "18265:1:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "18261:6:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "18248:19:19"
                            },
                            {
                              "assignments": [
                                3221
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3221,
                                  "mutability": "mutable",
                                  "name": "value",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3320,
                                  "src": "18281:13:19",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 3220,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "18281:7:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3225,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 3222,
                                  "name": "values",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3168,
                                  "src": "18297:6:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 3224,
                                "indexExpression": {
                                  "id": 3223,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3206,
                                  "src": "18304:1:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "18297:9:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "18281:25:19"
                            },
                            {
                              "condition": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 3226,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3215,
                                    "src": "18324:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3227,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "isFungibleToken",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1321,
                                  "src": "18324:18:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256) pure returns (bool)"
                                  }
                                },
                                "id": 3228,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "18324:20:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "arguments": [
                                    {
                                      "id": 3238,
                                      "name": "_collectionMaskLength",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 771,
                                      "src": "18439:21:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 3236,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3215,
                                      "src": "18417:2:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 3237,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "isNonFungibleToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1345,
                                    "src": "18417:21:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (bool)"
                                    }
                                  },
                                  "id": 3239,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "18417:44:19",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "id": 3317,
                                  "nodeType": "Block",
                                  "src": "19329:68:19",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "hexValue": "496e76656e746f72793a206e6f74206120746f6b656e206964",
                                            "id": 3314,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "19354:27:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                              "typeString": "literal_string \"Inventory: not a token id\""
                                            },
                                            "value": "Inventory: not a token id"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                              "typeString": "literal_string \"Inventory: not a token id\""
                                            }
                                          ],
                                          "id": 3313,
                                          "name": "revert",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [
                                            -19,
                                            -19
                                          ],
                                          "referencedDeclaration": -19,
                                          "src": "19347:6:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                            "typeString": "function (string memory) pure"
                                          }
                                        },
                                        "id": 3315,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "19347:35:19",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 3316,
                                      "nodeType": "ExpressionStatement",
                                      "src": "19347:35:19"
                                    }
                                  ]
                                },
                                "id": 3318,
                                "nodeType": "IfStatement",
                                "src": "18413:984:19",
                                "trueBody": {
                                  "id": 3312,
                                  "nodeType": "Block",
                                  "src": "18463:860:19",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 3241,
                                            "name": "to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3162,
                                            "src": "18490:2:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 3242,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3215,
                                            "src": "18494:2:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 3243,
                                            "name": "value",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3221,
                                            "src": "18498:5:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "hexValue": "74727565",
                                            "id": 3244,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "bool",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "18505:4:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            },
                                            "value": "true"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          ],
                                          "id": 3240,
                                          "name": "_mintNFT",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3684,
                                          "src": "18481:8:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                                            "typeString": "function (address,uint256,uint256,bool)"
                                          }
                                        },
                                        "id": 3245,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "18481:29:19",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 3246,
                                      "nodeType": "ExpressionStatement",
                                      "src": "18481:29:19"
                                    },
                                    {
                                      "eventCall": {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "hexValue": "30",
                                                "id": 3250,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "18550:1:19",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_0_by_1",
                                                  "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_rational_0_by_1",
                                                  "typeString": "int_const 0"
                                                }
                                              ],
                                              "id": 3249,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "18542:7:19",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                              },
                                              "typeName": {
                                                "id": 3248,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "18542:7:19",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 3251,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "18542:10:19",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address_payable",
                                              "typeString": "address payable"
                                            }
                                          },
                                          {
                                            "id": 3252,
                                            "name": "to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3162,
                                            "src": "18554:2:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 3253,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3215,
                                            "src": "18558:2:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address_payable",
                                              "typeString": "address payable"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 3247,
                                          "name": "Transfer",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4645,
                                          "src": "18533:8:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                            "typeString": "function (address,address,uint256)"
                                          }
                                        },
                                        "id": 3254,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "18533:28:19",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 3255,
                                      "nodeType": "EmitStatement",
                                      "src": "18528:33:19"
                                    },
                                    {
                                      "assignments": [
                                        3257
                                      ],
                                      "declarations": [
                                        {
                                          "constant": false,
                                          "id": 3257,
                                          "mutability": "mutable",
                                          "name": "nextCollectionId",
                                          "nodeType": "VariableDeclaration",
                                          "scope": 3312,
                                          "src": "18579:24:19",
                                          "stateVariable": false,
                                          "storageLocation": "default",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "typeName": {
                                            "id": 3256,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "18579:7:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "visibility": "internal"
                                        }
                                      ],
                                      "id": 3262,
                                      "initialValue": {
                                        "arguments": [
                                          {
                                            "id": 3260,
                                            "name": "_collectionMaskLength",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 771,
                                            "src": "18634:21:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "id": 3258,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3215,
                                            "src": "18606:2:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 3259,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "getNonFungibleCollection",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 1362,
                                          "src": "18606:27:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 3261,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "18606:50:19",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "VariableDeclarationStatement",
                                      "src": "18579:77:19"
                                    },
                                    {
                                      "condition": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 3265,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 3263,
                                          "name": "nfCollectionId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3197,
                                          "src": "18678:14:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "hexValue": "30",
                                          "id": 3264,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "18696:1:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "src": "18678:19:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "falseBody": {
                                        "id": 3310,
                                        "nodeType": "Block",
                                        "src": "18822:487:19",
                                        "statements": [
                                          {
                                            "condition": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 3277,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 3275,
                                                "name": "nextCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3257,
                                                "src": "18848:16:19",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "!=",
                                              "rightExpression": {
                                                "id": 3276,
                                                "name": "nfCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3197,
                                                "src": "18868:14:19",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "18848:34:19",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "falseBody": {
                                              "id": 3308,
                                              "nodeType": "Block",
                                              "src": "19223:68:19",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "id": 3306,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "UnaryOperation",
                                                    "operator": "++",
                                                    "prefix": true,
                                                    "src": "19249:19:19",
                                                    "subExpression": {
                                                      "id": 3305,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 3200,
                                                      "src": "19251:17:19",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 3307,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "19249:19:19"
                                                }
                                              ]
                                            },
                                            "id": 3309,
                                            "nodeType": "IfStatement",
                                            "src": "18844:447:19",
                                            "trueBody": {
                                              "id": 3304,
                                              "nodeType": "Block",
                                              "src": "18884:333:19",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "id": 3284,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "baseExpression": {
                                                        "baseExpression": {
                                                          "id": 3278,
                                                          "name": "_balances",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 792,
                                                          "src": "18910:9:19",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                            "typeString": "mapping(uint256 => mapping(address => uint256))"
                                                          }
                                                        },
                                                        "id": 3281,
                                                        "indexExpression": {
                                                          "id": 3279,
                                                          "name": "nfCollectionId",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 3197,
                                                          "src": "18920:14:19",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "18910:25:19",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                          "typeString": "mapping(address => uint256)"
                                                        }
                                                      },
                                                      "id": 3282,
                                                      "indexExpression": {
                                                        "id": 3280,
                                                        "name": "to",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3162,
                                                        "src": "18936:2:19",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      },
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": true,
                                                      "nodeType": "IndexAccess",
                                                      "src": "18910:29:19",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "+=",
                                                    "rightHandSide": {
                                                      "id": 3283,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 3200,
                                                      "src": "18943:17:19",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "18910:50:19",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 3285,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "18910:50:19"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 3290,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "baseExpression": {
                                                        "id": 3286,
                                                        "name": "_supplies",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 796,
                                                        "src": "18986:9:19",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                                          "typeString": "mapping(uint256 => uint256)"
                                                        }
                                                      },
                                                      "id": 3288,
                                                      "indexExpression": {
                                                        "id": 3287,
                                                        "name": "nfCollectionId",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3197,
                                                        "src": "18996:14:19",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": true,
                                                      "nodeType": "IndexAccess",
                                                      "src": "18986:25:19",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "+=",
                                                    "rightHandSide": {
                                                      "id": 3289,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 3200,
                                                      "src": "19015:17:19",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "18986:46:19",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 3291,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "18986:46:19"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 3294,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 3292,
                                                      "name": "nfCollectionId",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 3197,
                                                      "src": "19058:14:19",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                      "id": 3293,
                                                      "name": "nextCollectionId",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 3257,
                                                      "src": "19075:16:19",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "19058:33:19",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 3295,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "19058:33:19"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 3298,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 3296,
                                                      "name": "nftsCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 3203,
                                                      "src": "19117:9:19",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "+=",
                                                    "rightHandSide": {
                                                      "id": 3297,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 3200,
                                                      "src": "19130:17:19",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "19117:30:19",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 3299,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "19117:30:19"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 3302,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 3300,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 3200,
                                                      "src": "19173:17:19",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                      "hexValue": "31",
                                                      "id": 3301,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "19193:1:19",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_1_by_1",
                                                        "typeString": "int_const 1"
                                                      },
                                                      "value": "1"
                                                    },
                                                    "src": "19173:21:19",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 3303,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "19173:21:19"
                                                }
                                              ]
                                            }
                                          }
                                        ]
                                      },
                                      "id": 3311,
                                      "nodeType": "IfStatement",
                                      "src": "18674:635:19",
                                      "trueBody": {
                                        "id": 3274,
                                        "nodeType": "Block",
                                        "src": "18699:117:19",
                                        "statements": [
                                          {
                                            "expression": {
                                              "id": 3268,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "id": 3266,
                                                "name": "nfCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3197,
                                                "src": "18721:14:19",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "id": 3267,
                                                "name": "nextCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3257,
                                                "src": "18738:16:19",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "18721:33:19",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 3269,
                                            "nodeType": "ExpressionStatement",
                                            "src": "18721:33:19"
                                          },
                                          {
                                            "expression": {
                                              "id": 3272,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "id": 3270,
                                                "name": "nfCollectionCount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3200,
                                                "src": "18776:17:19",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "hexValue": "31",
                                                "id": 3271,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "18796:1:19",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_1_by_1",
                                                  "typeString": "int_const 1"
                                                },
                                                "value": "1"
                                              },
                                              "src": "18776:21:19",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 3273,
                                            "nodeType": "ExpressionStatement",
                                            "src": "18776:21:19"
                                          }
                                        ]
                                      }
                                    }
                                  ]
                                }
                              },
                              "id": 3319,
                              "nodeType": "IfStatement",
                              "src": "18320:1077:19",
                              "trueBody": {
                                "id": 3235,
                                "nodeType": "Block",
                                "src": "18346:61:19",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 3230,
                                          "name": "to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3162,
                                          "src": "18378:2:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 3231,
                                          "name": "id",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3215,
                                          "src": "18382:2:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 3232,
                                          "name": "value",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3221,
                                          "src": "18386:5:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 3229,
                                        "name": "_mintFungible",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3616,
                                        "src": "18364:13:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,uint256,uint256)"
                                        }
                                      },
                                      "id": 3233,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "18364:28:19",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 3234,
                                    "nodeType": "ExpressionStatement",
                                    "src": "18364:28:19"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3210,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3208,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3206,
                            "src": "18216:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 3209,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3184,
                            "src": "18221:6:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18216:11:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3321,
                        "initializationExpression": {
                          "assignments": [
                            3206
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 3206,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 3321,
                              "src": "18205:9:19",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 3205,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "18205:7:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 3207,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "18205:9:19"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 3212,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "18229:3:19",
                            "subExpression": {
                              "id": 3211,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3206,
                              "src": "18231:1:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3213,
                          "nodeType": "ExpressionStatement",
                          "src": "18229:3:19"
                        },
                        "nodeType": "ForStatement",
                        "src": "18200:1207:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3324,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3322,
                            "name": "nfCollectionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3197,
                            "src": "19421:14:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 3323,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19439:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "19421:19:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3350,
                        "nodeType": "IfStatement",
                        "src": "19417:247:19",
                        "trueBody": {
                          "id": 3349,
                          "nodeType": "Block",
                          "src": "19442:222:19",
                          "statements": [
                            {
                              "expression": {
                                "id": 3331,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 3325,
                                      "name": "_balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 792,
                                      "src": "19456:9:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(uint256 => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 3328,
                                    "indexExpression": {
                                      "id": 3326,
                                      "name": "nfCollectionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3197,
                                      "src": "19466:14:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "19456:25:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 3329,
                                  "indexExpression": {
                                    "id": 3327,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3162,
                                    "src": "19482:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "19456:29:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 3330,
                                  "name": "nfCollectionCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3200,
                                  "src": "19489:17:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "19456:50:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3332,
                              "nodeType": "ExpressionStatement",
                              "src": "19456:50:19"
                            },
                            {
                              "expression": {
                                "id": 3337,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 3333,
                                    "name": "_supplies",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 796,
                                    "src": "19520:9:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 3335,
                                  "indexExpression": {
                                    "id": 3334,
                                    "name": "nfCollectionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3197,
                                    "src": "19530:14:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "19520:25:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 3336,
                                  "name": "nfCollectionCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3200,
                                  "src": "19549:17:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "19520:46:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3338,
                              "nodeType": "ExpressionStatement",
                              "src": "19520:46:19"
                            },
                            {
                              "expression": {
                                "id": 3341,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 3339,
                                  "name": "nftsCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3203,
                                  "src": "19580:9:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 3340,
                                  "name": "nfCollectionCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3200,
                                  "src": "19593:17:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "19580:30:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3342,
                              "nodeType": "ExpressionStatement",
                              "src": "19580:30:19"
                            },
                            {
                              "expression": {
                                "id": 3347,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 3343,
                                    "name": "_nftBalances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1750,
                                    "src": "19624:12:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 3345,
                                  "indexExpression": {
                                    "id": 3344,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3162,
                                    "src": "19637:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "19624:16:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 3346,
                                  "name": "nftsCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3203,
                                  "src": "19644:9:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "19624:29:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3348,
                              "nodeType": "ExpressionStatement",
                              "src": "19624:29:19"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 3352,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 229,
                                "src": "19693:10:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 3353,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19693:12:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 3356,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "19715:1:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 3355,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "19707:7:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 3354,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "19707:7:19",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 3357,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19707:10:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 3358,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3162,
                              "src": "19719:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3359,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3165,
                              "src": "19723:3:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 3360,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3168,
                              "src": "19728:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 3351,
                            "name": "TransferBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1410,
                            "src": "19679:13:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 3361,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19679:56:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3362,
                        "nodeType": "EmitStatement",
                        "src": "19674:61:19"
                      },
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 3363,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3162,
                              "src": "19749:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 3364,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 588,
                            "src": "19749:13:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 3365,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19749:15:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3378,
                        "nodeType": "IfStatement",
                        "src": "19745:108:19",
                        "trueBody": {
                          "id": 3377,
                          "nodeType": "Block",
                          "src": "19766:87:19",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 3369,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "19816:1:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 3368,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "19808:7:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 3367,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "19808:7:19",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 3370,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "19808:10:19",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 3371,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3162,
                                    "src": "19820:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 3372,
                                    "name": "ids",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3165,
                                    "src": "19824:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 3373,
                                    "name": "values",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3168,
                                    "src": "19829:6:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 3374,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3170,
                                    "src": "19837:4:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 3366,
                                  "name": "_callOnERC1155BatchReceived",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1298,
                                  "src": "19780:27:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory)"
                                  }
                                },
                                "id": 3375,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19780:62:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3376,
                              "nodeType": "ExpressionStatement",
                              "src": "19780:62:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3160,
                    "nodeType": "StructuredDocumentation",
                    "src": "17590:168:19",
                    "text": " Safely mints a batch of tokens (ERC1155-compatible).\n @dev See {IERC1155721InventoryMintable-safeBatchMint(address,uint256[],uint256[],bytes)}."
                  },
                  "id": 3380,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_safeBatchMint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3171,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3162,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 3380,
                        "src": "17796:10:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3161,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "17796:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3165,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 3380,
                        "src": "17816:20:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3163,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "17816:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3164,
                          "nodeType": "ArrayTypeName",
                          "src": "17816:9:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3168,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 3380,
                        "src": "17846:23:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3166,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "17846:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3167,
                          "nodeType": "ArrayTypeName",
                          "src": "17846:9:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3170,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 3380,
                        "src": "17879:17:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3169,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "17879:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17786:116:19"
                  },
                  "returnParameters": {
                    "id": 3172,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "17920:0:19"
                  },
                  "scope": 3977,
                  "src": "17763:2096:19",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3565,
                    "nodeType": "Block",
                    "src": "20201:1354:19",
                    "statements": [
                      {
                        "assignments": [
                          3396
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3396,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 3565,
                            "src": "20211:14:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3395,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "20211:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3399,
                        "initialValue": {
                          "expression": {
                            "id": 3397,
                            "name": "recipients",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3384,
                            "src": "20228:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          "id": 3398,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "20228:17:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "20211:34:19"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 3409,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3404,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3401,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3396,
                                  "src": "20263:6:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "id": 3402,
                                    "name": "ids",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3387,
                                    "src": "20273:3:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                      "typeString": "uint256[] calldata"
                                    }
                                  },
                                  "id": 3403,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "20273:10:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "20263:20:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3408,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3405,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3396,
                                  "src": "20287:6:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "id": 3406,
                                    "name": "values",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3390,
                                    "src": "20297:6:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                      "typeString": "uint256[] calldata"
                                    }
                                  },
                                  "id": 3407,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "20297:13:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "20287:23:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "20263:47:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a20696e636f6e73697374656e7420617272617973",
                              "id": 3410,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20312:32:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7a126caadb5177dc3b65272d4b18471177661f27977eda64cf57724e2b12039b",
                                "typeString": "literal_string \"Inventory: inconsistent arrays\""
                              },
                              "value": "Inventory: inconsistent arrays"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7a126caadb5177dc3b65272d4b18471177661f27977eda64cf57724e2b12039b",
                                "typeString": "literal_string \"Inventory: inconsistent arrays\""
                              }
                            ],
                            "id": 3400,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "20255:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3411,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20255:90:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3412,
                        "nodeType": "ExpressionStatement",
                        "src": "20255:90:19"
                      },
                      {
                        "assignments": [
                          3414
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3414,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 3565,
                            "src": "20356:14:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 3413,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "20356:7:19",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3417,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 3415,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 229,
                            "src": "20373:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 3416,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20373:12:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "20356:29:19"
                      },
                      {
                        "body": {
                          "id": 3563,
                          "nodeType": "Block",
                          "src": "20429:1120:19",
                          "statements": [
                            {
                              "assignments": [
                                3428
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3428,
                                  "mutability": "mutable",
                                  "name": "to",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3563,
                                  "src": "20443:10:19",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 3427,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "20443:7:19",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3432,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 3429,
                                  "name": "recipients",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3384,
                                  "src": "20456:10:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 3431,
                                "indexExpression": {
                                  "id": 3430,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3419,
                                  "src": "20467:1:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "20456:13:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "20443:26:19"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 3439,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 3434,
                                      "name": "to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3428,
                                      "src": "20491:2:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "hexValue": "30",
                                          "id": 3437,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "20505:1:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          }
                                        ],
                                        "id": 3436,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "20497:7:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 3435,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "20497:7:19",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 3438,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "20497:10:19",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "src": "20491:16:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "496e76656e746f72793a206d696e7420746f207a65726f",
                                    "id": 3440,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "20509:25:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_2aa217cc40fce9df99cb009139c564411f21d5a0c84ae1e669a4fa9e1e0f03c2",
                                      "typeString": "literal_string \"Inventory: mint to zero\""
                                    },
                                    "value": "Inventory: mint to zero"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_2aa217cc40fce9df99cb009139c564411f21d5a0c84ae1e669a4fa9e1e0f03c2",
                                      "typeString": "literal_string \"Inventory: mint to zero\""
                                    }
                                  ],
                                  "id": 3433,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "20483:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 3441,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "20483:52:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3442,
                              "nodeType": "ExpressionStatement",
                              "src": "20483:52:19"
                            },
                            {
                              "assignments": [
                                3444
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3444,
                                  "mutability": "mutable",
                                  "name": "id",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3563,
                                  "src": "20549:10:19",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 3443,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "20549:7:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3448,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 3445,
                                  "name": "ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3387,
                                  "src": "20562:3:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                    "typeString": "uint256[] calldata"
                                  }
                                },
                                "id": 3447,
                                "indexExpression": {
                                  "id": 3446,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3419,
                                  "src": "20566:1:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "20562:6:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "20549:19:19"
                            },
                            {
                              "assignments": [
                                3450
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3450,
                                  "mutability": "mutable",
                                  "name": "value",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3563,
                                  "src": "20582:13:19",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 3449,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "20582:7:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3454,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 3451,
                                  "name": "values",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3390,
                                  "src": "20598:6:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                    "typeString": "uint256[] calldata"
                                  }
                                },
                                "id": 3453,
                                "indexExpression": {
                                  "id": 3452,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3419,
                                  "src": "20605:1:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "20598:9:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "20582:25:19"
                            },
                            {
                              "condition": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 3455,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3444,
                                    "src": "20625:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3456,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "isFungibleToken",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1321,
                                  "src": "20625:18:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256) pure returns (bool)"
                                  }
                                },
                                "id": 3457,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "20625:20:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "arguments": [
                                    {
                                      "id": 3494,
                                      "name": "_collectionMaskLength",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 771,
                                      "src": "20946:21:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 3492,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3444,
                                      "src": "20924:2:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 3493,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "isNonFungibleToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1345,
                                    "src": "20924:21:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (bool)"
                                    }
                                  },
                                  "id": 3495,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "20924:44:19",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "id": 3560,
                                  "nodeType": "Block",
                                  "src": "21471:68:19",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "hexValue": "496e76656e746f72793a206e6f74206120746f6b656e206964",
                                            "id": 3557,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "21496:27:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                              "typeString": "literal_string \"Inventory: not a token id\""
                                            },
                                            "value": "Inventory: not a token id"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                              "typeString": "literal_string \"Inventory: not a token id\""
                                            }
                                          ],
                                          "id": 3556,
                                          "name": "revert",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [
                                            -19,
                                            -19
                                          ],
                                          "referencedDeclaration": -19,
                                          "src": "21489:6:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                            "typeString": "function (string memory) pure"
                                          }
                                        },
                                        "id": 3558,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "21489:35:19",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 3559,
                                      "nodeType": "ExpressionStatement",
                                      "src": "21489:35:19"
                                    }
                                  ]
                                },
                                "id": 3561,
                                "nodeType": "IfStatement",
                                "src": "20920:619:19",
                                "trueBody": {
                                  "id": 3555,
                                  "nodeType": "Block",
                                  "src": "20970:495:19",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 3497,
                                            "name": "to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3428,
                                            "src": "20997:2:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 3498,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3444,
                                            "src": "21001:2:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 3499,
                                            "name": "value",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3450,
                                            "src": "21005:5:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "hexValue": "66616c7365",
                                            "id": 3500,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "bool",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "21012:5:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            },
                                            "value": "false"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          ],
                                          "id": 3496,
                                          "name": "_mintNFT",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3684,
                                          "src": "20988:8:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                                            "typeString": "function (address,uint256,uint256,bool)"
                                          }
                                        },
                                        "id": 3501,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "20988:30:19",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 3502,
                                      "nodeType": "ExpressionStatement",
                                      "src": "20988:30:19"
                                    },
                                    {
                                      "eventCall": {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "hexValue": "30",
                                                "id": 3506,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "21058:1:19",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_0_by_1",
                                                  "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_rational_0_by_1",
                                                  "typeString": "int_const 0"
                                                }
                                              ],
                                              "id": 3505,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "21050:7:19",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                              },
                                              "typeName": {
                                                "id": 3504,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "21050:7:19",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 3507,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "21050:10:19",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address_payable",
                                              "typeString": "address payable"
                                            }
                                          },
                                          {
                                            "id": 3508,
                                            "name": "to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3428,
                                            "src": "21062:2:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 3509,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3444,
                                            "src": "21066:2:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address_payable",
                                              "typeString": "address payable"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 3503,
                                          "name": "Transfer",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4645,
                                          "src": "21041:8:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                            "typeString": "function (address,address,uint256)"
                                          }
                                        },
                                        "id": 3510,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "21041:28:19",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 3511,
                                      "nodeType": "EmitStatement",
                                      "src": "21036:33:19"
                                    },
                                    {
                                      "eventCall": {
                                        "arguments": [
                                          {
                                            "id": 3513,
                                            "name": "sender",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3414,
                                            "src": "21107:6:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "hexValue": "30",
                                                "id": 3516,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "21123:1:19",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_0_by_1",
                                                  "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_rational_0_by_1",
                                                  "typeString": "int_const 0"
                                                }
                                              ],
                                              "id": 3515,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "21115:7:19",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                              },
                                              "typeName": {
                                                "id": 3514,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "21115:7:19",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 3517,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "21115:10:19",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address_payable",
                                              "typeString": "address payable"
                                            }
                                          },
                                          {
                                            "id": 3518,
                                            "name": "to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3428,
                                            "src": "21127:2:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 3519,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3444,
                                            "src": "21131:2:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "hexValue": "31",
                                            "id": 3520,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "21135:1:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_address_payable",
                                              "typeString": "address payable"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            }
                                          ],
                                          "id": 3512,
                                          "name": "TransferSingle",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1396,
                                          "src": "21092:14:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                            "typeString": "function (address,address,address,uint256,uint256)"
                                          }
                                        },
                                        "id": 3521,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "21092:45:19",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 3522,
                                      "nodeType": "EmitStatement",
                                      "src": "21087:50:19"
                                    },
                                    {
                                      "condition": {
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "expression": {
                                            "id": 3523,
                                            "name": "to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3428,
                                            "src": "21159:2:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "id": 3524,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "isContract",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 588,
                                          "src": "21159:13:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                                            "typeString": "function (address) view returns (bool)"
                                          }
                                        },
                                        "id": 3525,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "21159:15:19",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "id": 3554,
                                      "nodeType": "IfStatement",
                                      "src": "21155:296:19",
                                      "trueBody": {
                                        "id": 3553,
                                        "nodeType": "Block",
                                        "src": "21176:275:19",
                                        "statements": [
                                          {
                                            "condition": {
                                              "arguments": [
                                                {
                                                  "id": 3527,
                                                  "name": "to",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 3428,
                                                  "src": "21226:2:19",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                ],
                                                "id": 3526,
                                                "name": "_isERC1155TokenReceiver",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3944,
                                                "src": "21202:23:19",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                                  "typeString": "function (address) view returns (bool)"
                                                }
                                              },
                                              "id": 3528,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "21202:27:19",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "falseBody": {
                                              "id": 3551,
                                              "nodeType": "Block",
                                              "src": "21337:96:19",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "hexValue": "30",
                                                            "id": 3544,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "21393:1:19",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_rational_0_by_1",
                                                              "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                          }
                                                        ],
                                                        "expression": {
                                                          "argumentTypes": [
                                                            {
                                                              "typeIdentifier": "t_rational_0_by_1",
                                                              "typeString": "int_const 0"
                                                            }
                                                          ],
                                                          "id": 3543,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "lValueRequested": false,
                                                          "nodeType": "ElementaryTypeNameExpression",
                                                          "src": "21385:7:19",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                          },
                                                          "typeName": {
                                                            "id": 3542,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "21385:7:19",
                                                            "typeDescriptions": {}
                                                          }
                                                        },
                                                        "id": 3545,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "21385:10:19",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address_payable",
                                                          "typeString": "address payable"
                                                        }
                                                      },
                                                      {
                                                        "id": 3546,
                                                        "name": "to",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3428,
                                                        "src": "21397:2:19",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      },
                                                      {
                                                        "id": 3547,
                                                        "name": "id",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3444,
                                                        "src": "21401:2:19",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      {
                                                        "id": 3548,
                                                        "name": "data",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3392,
                                                        "src": "21405:4:19",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_bytes_calldata_ptr",
                                                          "typeString": "bytes calldata"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_address_payable",
                                                          "typeString": "address payable"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_bytes_calldata_ptr",
                                                          "typeString": "bytes calldata"
                                                        }
                                                      ],
                                                      "id": 3541,
                                                      "name": "_callOnERC721Received",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 3976,
                                                      "src": "21363:21:19",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                                        "typeString": "function (address,address,uint256,bytes memory)"
                                                      }
                                                    },
                                                    "id": 3549,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "21363:47:19",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_tuple$__$",
                                                      "typeString": "tuple()"
                                                    }
                                                  },
                                                  "id": 3550,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "21363:47:19"
                                                }
                                              ]
                                            },
                                            "id": 3552,
                                            "nodeType": "IfStatement",
                                            "src": "21198:235:19",
                                            "trueBody": {
                                              "id": 3540,
                                              "nodeType": "Block",
                                              "src": "21231:100:19",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "hexValue": "30",
                                                            "id": 3532,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "21288:1:19",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_rational_0_by_1",
                                                              "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                          }
                                                        ],
                                                        "expression": {
                                                          "argumentTypes": [
                                                            {
                                                              "typeIdentifier": "t_rational_0_by_1",
                                                              "typeString": "int_const 0"
                                                            }
                                                          ],
                                                          "id": 3531,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "lValueRequested": false,
                                                          "nodeType": "ElementaryTypeNameExpression",
                                                          "src": "21280:7:19",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                          },
                                                          "typeName": {
                                                            "id": 3530,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "21280:7:19",
                                                            "typeDescriptions": {}
                                                          }
                                                        },
                                                        "id": 3533,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "21280:10:19",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address_payable",
                                                          "typeString": "address payable"
                                                        }
                                                      },
                                                      {
                                                        "id": 3534,
                                                        "name": "to",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3428,
                                                        "src": "21292:2:19",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      },
                                                      {
                                                        "id": 3535,
                                                        "name": "id",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3444,
                                                        "src": "21296:2:19",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      {
                                                        "hexValue": "31",
                                                        "id": 3536,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "21300:1:19",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_rational_1_by_1",
                                                          "typeString": "int_const 1"
                                                        },
                                                        "value": "1"
                                                      },
                                                      {
                                                        "id": 3537,
                                                        "name": "data",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3392,
                                                        "src": "21303:4:19",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_bytes_calldata_ptr",
                                                          "typeString": "bytes calldata"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_address_payable",
                                                          "typeString": "address payable"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_rational_1_by_1",
                                                          "typeString": "int_const 1"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_bytes_calldata_ptr",
                                                          "typeString": "bytes calldata"
                                                        }
                                                      ],
                                                      "id": 3529,
                                                      "name": "_callOnERC1155Received",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 1264,
                                                      "src": "21257:22:19",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                                        "typeString": "function (address,address,uint256,uint256,bytes memory)"
                                                      }
                                                    },
                                                    "id": 3538,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "21257:51:19",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_tuple$__$",
                                                      "typeString": "tuple()"
                                                    }
                                                  },
                                                  "id": 3539,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "21257:51:19"
                                                }
                                              ]
                                            }
                                          }
                                        ]
                                      }
                                    }
                                  ]
                                }
                              },
                              "id": 3562,
                              "nodeType": "IfStatement",
                              "src": "20621:918:19",
                              "trueBody": {
                                "id": 3491,
                                "nodeType": "Block",
                                "src": "20647:267:19",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 3459,
                                          "name": "to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3428,
                                          "src": "20679:2:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 3460,
                                          "name": "id",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3444,
                                          "src": "20683:2:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 3461,
                                          "name": "value",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3450,
                                          "src": "20687:5:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 3458,
                                        "name": "_mintFungible",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3616,
                                        "src": "20665:13:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,uint256,uint256)"
                                        }
                                      },
                                      "id": 3462,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "20665:28:19",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 3463,
                                    "nodeType": "ExpressionStatement",
                                    "src": "20665:28:19"
                                  },
                                  {
                                    "eventCall": {
                                      "arguments": [
                                        {
                                          "id": 3465,
                                          "name": "sender",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3414,
                                          "src": "20731:6:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "hexValue": "30",
                                              "id": 3468,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "20747:1:19",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                              },
                                              "value": "0"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                              }
                                            ],
                                            "id": 3467,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "20739:7:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_address_$",
                                              "typeString": "type(address)"
                                            },
                                            "typeName": {
                                              "id": 3466,
                                              "name": "address",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "20739:7:19",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 3469,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "20739:10:19",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          }
                                        },
                                        {
                                          "id": 3470,
                                          "name": "to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3428,
                                          "src": "20751:2:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 3471,
                                          "name": "id",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3444,
                                          "src": "20755:2:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 3472,
                                          "name": "value",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3450,
                                          "src": "20759:5:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 3464,
                                        "name": "TransferSingle",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1396,
                                        "src": "20716:14:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,address,address,uint256,uint256)"
                                        }
                                      },
                                      "id": 3473,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "20716:49:19",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 3474,
                                    "nodeType": "EmitStatement",
                                    "src": "20711:54:19"
                                  },
                                  {
                                    "condition": {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "id": 3475,
                                          "name": "to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3428,
                                          "src": "20787:2:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "id": 3476,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "isContract",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 588,
                                        "src": "20787:13:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                                          "typeString": "function (address) view returns (bool)"
                                        }
                                      },
                                      "id": 3477,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "20787:15:19",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 3490,
                                    "nodeType": "IfStatement",
                                    "src": "20783:117:19",
                                    "trueBody": {
                                      "id": 3489,
                                      "nodeType": "Block",
                                      "src": "20804:96:19",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "hexValue": "30",
                                                    "id": 3481,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "20857:1:19",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_0_by_1",
                                                      "typeString": "int_const 0"
                                                    },
                                                    "value": "0"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_rational_0_by_1",
                                                      "typeString": "int_const 0"
                                                    }
                                                  ],
                                                  "id": 3480,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "nodeType": "ElementaryTypeNameExpression",
                                                  "src": "20849:7:19",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_address_$",
                                                    "typeString": "type(address)"
                                                  },
                                                  "typeName": {
                                                    "id": 3479,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "20849:7:19",
                                                    "typeDescriptions": {}
                                                  }
                                                },
                                                "id": 3482,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "20849:10:19",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address_payable",
                                                  "typeString": "address payable"
                                                }
                                              },
                                              {
                                                "id": 3483,
                                                "name": "to",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3428,
                                                "src": "20861:2:19",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "id": 3484,
                                                "name": "id",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3444,
                                                "src": "20865:2:19",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              {
                                                "id": 3485,
                                                "name": "value",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3450,
                                                "src": "20869:5:19",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              {
                                                "id": 3486,
                                                "name": "data",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3392,
                                                "src": "20876:4:19",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                                  "typeString": "bytes calldata"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address_payable",
                                                  "typeString": "address payable"
                                                },
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                {
                                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                                  "typeString": "bytes calldata"
                                                }
                                              ],
                                              "id": 3478,
                                              "name": "_callOnERC1155Received",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1264,
                                              "src": "20826:22:19",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                                "typeString": "function (address,address,uint256,uint256,bytes memory)"
                                              }
                                            },
                                            "id": 3487,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "20826:55:19",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 3488,
                                          "nodeType": "ExpressionStatement",
                                          "src": "20826:55:19"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3423,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3421,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3419,
                            "src": "20411:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 3422,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3396,
                            "src": "20416:6:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "20411:11:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3564,
                        "initializationExpression": {
                          "assignments": [
                            3419
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 3419,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 3564,
                              "src": "20400:9:19",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 3418,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "20400:7:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 3420,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "20400:9:19"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 3425,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "20424:3:19",
                            "subExpression": {
                              "id": 3424,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3419,
                              "src": "20426:1:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3426,
                          "nodeType": "ExpressionStatement",
                          "src": "20424:3:19"
                        },
                        "nodeType": "ForStatement",
                        "src": "20395:1154:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3381,
                    "nodeType": "StructuredDocumentation",
                    "src": "19865:159:19",
                    "text": " Safely mints some tokens to a list of recipients.\n @dev See {IERC1155721Deliverable-safeDeliver(address[],uint256[],uint256[],bytes)}."
                  },
                  "id": 3566,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_safeDeliver",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3393,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3384,
                        "mutability": "mutable",
                        "name": "recipients",
                        "nodeType": "VariableDeclaration",
                        "scope": 3566,
                        "src": "20060:29:19",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3382,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "20060:7:19",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 3383,
                          "nodeType": "ArrayTypeName",
                          "src": "20060:9:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3387,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 3566,
                        "src": "20099:22:19",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3385,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "20099:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3386,
                          "nodeType": "ArrayTypeName",
                          "src": "20099:9:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3390,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 3566,
                        "src": "20131:25:19",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3388,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "20131:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3389,
                          "nodeType": "ArrayTypeName",
                          "src": "20131:9:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3392,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 3566,
                        "src": "20166:19:19",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3391,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "20166:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20050:141:19"
                  },
                  "returnParameters": {
                    "id": 3394,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "20201:0:19"
                  },
                  "scope": 3977,
                  "src": "20029:1526:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3615,
                    "nodeType": "Block",
                    "src": "21791:336:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3578,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3576,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3572,
                                "src": "21809:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 3577,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "21818:1:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "21809:10:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207a65726f2076616c7565",
                              "id": 3579,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21821:23:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_aaf8384685e144721b7b9369f09b3396100431a7a018020a214de32c84a5f76c",
                                "typeString": "literal_string \"Inventory: zero value\""
                              },
                              "value": "Inventory: zero value"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_aaf8384685e144721b7b9369f09b3396100431a7a018020a214de32c84a5f76c",
                                "typeString": "literal_string \"Inventory: zero value\""
                              }
                            ],
                            "id": 3575,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "21801:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3580,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21801:44:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3581,
                        "nodeType": "ExpressionStatement",
                        "src": "21801:44:19"
                      },
                      {
                        "assignments": [
                          3583
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3583,
                            "mutability": "mutable",
                            "name": "supply",
                            "nodeType": "VariableDeclaration",
                            "scope": 3615,
                            "src": "21855:14:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3582,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "21855:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3587,
                        "initialValue": {
                          "baseExpression": {
                            "id": 3584,
                            "name": "_supplies",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 796,
                            "src": "21872:9:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 3586,
                          "indexExpression": {
                            "id": 3585,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3570,
                            "src": "21882:2:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "21872:13:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "21855:30:19"
                      },
                      {
                        "assignments": [
                          3589
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3589,
                            "mutability": "mutable",
                            "name": "newSupply",
                            "nodeType": "VariableDeclaration",
                            "scope": 3615,
                            "src": "21895:17:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3588,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "21895:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3593,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3592,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3590,
                            "name": "supply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3583,
                            "src": "21915:6:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "id": 3591,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3572,
                            "src": "21924:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "21915:14:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "21895:34:19"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3597,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3595,
                                "name": "newSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3589,
                                "src": "21947:9:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "id": 3596,
                                "name": "supply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3583,
                                "src": "21959:6:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "21947:18:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a20737570706c79206f766572666c6f77",
                              "id": 3598,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21967:28:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c0eccaf1875915e4c46180a27a2af4eaa97d0b12ace18db3c53e487a78e65185",
                                "typeString": "literal_string \"Inventory: supply overflow\""
                              },
                              "value": "Inventory: supply overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c0eccaf1875915e4c46180a27a2af4eaa97d0b12ace18db3c53e487a78e65185",
                                "typeString": "literal_string \"Inventory: supply overflow\""
                              }
                            ],
                            "id": 3594,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "21939:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3599,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21939:57:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3600,
                        "nodeType": "ExpressionStatement",
                        "src": "21939:57:19"
                      },
                      {
                        "expression": {
                          "id": 3605,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 3601,
                              "name": "_supplies",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 796,
                              "src": "22006:9:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 3603,
                            "indexExpression": {
                              "id": 3602,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3570,
                              "src": "22016:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "22006:13:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 3604,
                            "name": "newSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3589,
                            "src": "22022:9:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "22006:25:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3606,
                        "nodeType": "ExpressionStatement",
                        "src": "22006:25:19"
                      },
                      {
                        "expression": {
                          "id": 3613,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 3607,
                                "name": "_balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 792,
                                "src": "22094:9:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(address => uint256))"
                                }
                              },
                              "id": 3610,
                              "indexExpression": {
                                "id": 3608,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3570,
                                "src": "22104:2:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "22094:13:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 3611,
                            "indexExpression": {
                              "id": 3609,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3568,
                              "src": "22108:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "22094:17:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 3612,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3572,
                            "src": "22115:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "22094:26:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3614,
                        "nodeType": "ExpressionStatement",
                        "src": "22094:26:19"
                      }
                    ]
                  },
                  "id": 3616,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mintFungible",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3573,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3568,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 3616,
                        "src": "21722:10:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3567,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "21722:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3570,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 3616,
                        "src": "21742:10:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3569,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21742:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3572,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 3616,
                        "src": "21762:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3571,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21762:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21712:69:19"
                  },
                  "returnParameters": {
                    "id": 3574,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "21791:0:19"
                  },
                  "scope": 3977,
                  "src": "21690:437:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3683,
                    "nodeType": "Block",
                    "src": "22251:565:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3630,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3628,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3622,
                                "src": "22269:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 3629,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "22278:1:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "22269:10:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a2077726f6e67204e46542076616c7565",
                              "id": 3631,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "22281:28:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e505803ce130ba2b210f4e0351e5d5c25d0a89714741c25638627f555e8b4cd5",
                                "typeString": "literal_string \"Inventory: wrong NFT value\""
                              },
                              "value": "Inventory: wrong NFT value"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e505803ce130ba2b210f4e0351e5d5c25d0a89714741c25638627f555e8b4cd5",
                                "typeString": "literal_string \"Inventory: wrong NFT value\""
                              }
                            ],
                            "id": 3627,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "22261:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3632,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22261:49:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3633,
                        "nodeType": "ExpressionStatement",
                        "src": "22261:49:19"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3639,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "baseExpression": {
                                  "id": 3635,
                                  "name": "_owners",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 800,
                                  "src": "22328:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 3637,
                                "indexExpression": {
                                  "id": 3636,
                                  "name": "id",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3620,
                                  "src": "22336:2:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "22328:11:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 3638,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "22343:1:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "22328:16:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206578697374696e672f6275726e74204e4654",
                              "id": 3640,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "22346:31:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_dc6b072f9dcb9a5cd9efd4703d0dd3eb9f2653b441c9fc483eba48e59797e83d",
                                "typeString": "literal_string \"Inventory: existing/burnt NFT\""
                              },
                              "value": "Inventory: existing/burnt NFT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_dc6b072f9dcb9a5cd9efd4703d0dd3eb9f2653b441c9fc483eba48e59797e83d",
                                "typeString": "literal_string \"Inventory: existing/burnt NFT\""
                              }
                            ],
                            "id": 3634,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "22320:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3641,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22320:58:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3642,
                        "nodeType": "ExpressionStatement",
                        "src": "22320:58:19"
                      },
                      {
                        "expression": {
                          "id": 3653,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 3643,
                              "name": "_owners",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 800,
                              "src": "22389:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 3645,
                            "indexExpression": {
                              "id": 3644,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3620,
                              "src": "22397:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "22389:11:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 3650,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3618,
                                    "src": "22419:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 3649,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "22411:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 3648,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "22411:7:19",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 3651,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "22411:11:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              ],
                              "id": 3647,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "22403:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 3646,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "22403:7:19",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 3652,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "22403:20:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "22389:34:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3654,
                        "nodeType": "ExpressionStatement",
                        "src": "22389:34:19"
                      },
                      {
                        "condition": {
                          "id": 3656,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "22438:8:19",
                          "subExpression": {
                            "id": 3655,
                            "name": "isBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3624,
                            "src": "22439:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3682,
                        "nodeType": "IfStatement",
                        "src": "22434:376:19",
                        "trueBody": {
                          "id": 3681,
                          "nodeType": "Block",
                          "src": "22448:362:19",
                          "statements": [
                            {
                              "assignments": [
                                3658
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3658,
                                  "mutability": "mutable",
                                  "name": "collectionId",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3681,
                                  "src": "22462:20:19",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 3657,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "22462:7:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3663,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 3661,
                                    "name": "_collectionMaskLength",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 771,
                                    "src": "22513:21:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 3659,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3620,
                                    "src": "22485:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3660,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getNonFungibleCollection",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1362,
                                  "src": "22485:27:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 3662,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "22485:50:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "22462:73:19"
                            },
                            {
                              "expression": {
                                "id": 3667,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": true,
                                "src": "22699:25:19",
                                "subExpression": {
                                  "baseExpression": {
                                    "id": 3664,
                                    "name": "_supplies",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 796,
                                    "src": "22701:9:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 3666,
                                  "indexExpression": {
                                    "id": 3665,
                                    "name": "collectionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3658,
                                    "src": "22711:12:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "22701:23:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3668,
                              "nodeType": "ExpressionStatement",
                              "src": "22699:25:19"
                            },
                            {
                              "expression": {
                                "id": 3674,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": true,
                                "src": "22738:29:19",
                                "subExpression": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 3669,
                                      "name": "_balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 792,
                                      "src": "22740:9:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(uint256 => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 3671,
                                    "indexExpression": {
                                      "id": 3670,
                                      "name": "collectionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3658,
                                      "src": "22750:12:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22740:23:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 3673,
                                  "indexExpression": {
                                    "id": 3672,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3618,
                                    "src": "22764:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "22740:27:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3675,
                              "nodeType": "ExpressionStatement",
                              "src": "22738:29:19"
                            },
                            {
                              "expression": {
                                "id": 3679,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": true,
                                "src": "22781:18:19",
                                "subExpression": {
                                  "baseExpression": {
                                    "id": 3676,
                                    "name": "_nftBalances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1750,
                                    "src": "22783:12:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 3678,
                                  "indexExpression": {
                                    "id": 3677,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3618,
                                    "src": "22796:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "22783:16:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3680,
                              "nodeType": "ExpressionStatement",
                              "src": "22781:18:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 3684,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mintNFT",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3625,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3618,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 3684,
                        "src": "22160:10:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3617,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "22160:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3620,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 3684,
                        "src": "22180:10:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3619,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22180:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3622,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 3684,
                        "src": "22200:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3621,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22200:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3624,
                        "mutability": "mutable",
                        "name": "isBatch",
                        "nodeType": "VariableDeclaration",
                        "scope": 3684,
                        "src": "22223:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3623,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "22223:4:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "22150:91:19"
                  },
                  "returnParameters": {
                    "id": 3626,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "22251:0:19"
                  },
                  "scope": 3977,
                  "src": "22133:683:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3747,
                    "nodeType": "Block",
                    "src": "22974:423:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3698,
                              "name": "operatable",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3694,
                              "src": "22992:10:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f6e2d617070726f7665642073656e646572",
                              "id": 3699,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "23004:32:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6b20705240a74b98ad3770de0b6354de37c9aed640ae675f48200e7f883462f0",
                                "typeString": "literal_string \"Inventory: non-approved sender\""
                              },
                              "value": "Inventory: non-approved sender"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6b20705240a74b98ad3770de0b6354de37c9aed640ae675f48200e7f883462f0",
                                "typeString": "literal_string \"Inventory: non-approved sender\""
                              }
                            ],
                            "id": 3697,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "22984:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3700,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22984:53:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3701,
                        "nodeType": "ExpressionStatement",
                        "src": "22984:53:19"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3705,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3703,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3692,
                                "src": "23055:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 3704,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "23064:1:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "23055:10:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207a65726f2076616c7565",
                              "id": 3706,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "23067:23:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_aaf8384685e144721b7b9369f09b3396100431a7a018020a214de32c84a5f76c",
                                "typeString": "literal_string \"Inventory: zero value\""
                              },
                              "value": "Inventory: zero value"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_aaf8384685e144721b7b9369f09b3396100431a7a018020a214de32c84a5f76c",
                                "typeString": "literal_string \"Inventory: zero value\""
                              }
                            ],
                            "id": 3702,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "23047:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3707,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23047:44:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3708,
                        "nodeType": "ExpressionStatement",
                        "src": "23047:44:19"
                      },
                      {
                        "assignments": [
                          3710
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3710,
                            "mutability": "mutable",
                            "name": "balance",
                            "nodeType": "VariableDeclaration",
                            "scope": 3747,
                            "src": "23101:15:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3709,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "23101:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3716,
                        "initialValue": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 3711,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 792,
                              "src": "23119:9:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(uint256 => mapping(address => uint256))"
                              }
                            },
                            "id": 3713,
                            "indexExpression": {
                              "id": 3712,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3690,
                              "src": "23129:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "23119:13:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 3715,
                          "indexExpression": {
                            "id": 3714,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3686,
                            "src": "23133:4:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "23119:19:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "23101:37:19"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3720,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3718,
                                "name": "balance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3710,
                                "src": "23156:7:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 3719,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3692,
                                "src": "23167:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "23156:16:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f7420656e6f7567682062616c616e6365",
                              "id": 3721,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "23174:31:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_82c893371492309285d50bc6a7cf0711f02e83a8e143785e5e0b985266953be1",
                                "typeString": "literal_string \"Inventory: not enough balance\""
                              },
                              "value": "Inventory: not enough balance"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_82c893371492309285d50bc6a7cf0711f02e83a8e143785e5e0b985266953be1",
                                "typeString": "literal_string \"Inventory: not enough balance\""
                              }
                            ],
                            "id": 3717,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "23148:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3722,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23148:58:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3723,
                        "nodeType": "ExpressionStatement",
                        "src": "23148:58:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 3726,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3724,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3686,
                            "src": "23220:4:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 3725,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3688,
                            "src": "23228:2:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "23220:10:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3746,
                        "nodeType": "IfStatement",
                        "src": "23216:175:19",
                        "trueBody": {
                          "id": 3745,
                          "nodeType": "Block",
                          "src": "23232:159:19",
                          "statements": [
                            {
                              "expression": {
                                "id": 3735,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 3727,
                                      "name": "_balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 792,
                                      "src": "23246:9:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(uint256 => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 3730,
                                    "indexExpression": {
                                      "id": 3728,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3690,
                                      "src": "23256:2:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "23246:13:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 3731,
                                  "indexExpression": {
                                    "id": 3729,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3686,
                                    "src": "23260:4:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "23246:19:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3734,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 3732,
                                    "name": "balance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3710,
                                    "src": "23268:7:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "id": 3733,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3692,
                                    "src": "23278:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "23268:15:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "23246:37:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3736,
                              "nodeType": "ExpressionStatement",
                              "src": "23246:37:19"
                            },
                            {
                              "expression": {
                                "id": 3743,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 3737,
                                      "name": "_balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 792,
                                      "src": "23354:9:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(uint256 => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 3740,
                                    "indexExpression": {
                                      "id": 3738,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3690,
                                      "src": "23364:2:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "23354:13:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 3741,
                                  "indexExpression": {
                                    "id": 3739,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3688,
                                    "src": "23368:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "23354:17:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 3742,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3692,
                                  "src": "23375:5:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "23354:26:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3744,
                              "nodeType": "ExpressionStatement",
                              "src": "23354:26:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 3748,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferFungible",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3695,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3686,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 3748,
                        "src": "22858:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3685,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "22858:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3688,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 3748,
                        "src": "22880:10:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3687,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "22880:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3690,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 3748,
                        "src": "22900:10:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3689,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22900:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3692,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 3748,
                        "src": "22920:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3691,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22920:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3694,
                        "mutability": "mutable",
                        "name": "operatable",
                        "nodeType": "VariableDeclaration",
                        "scope": 3748,
                        "src": "22943:15:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3693,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "22943:4:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "22848:116:19"
                  },
                  "returnParameters": {
                    "id": 3696,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "22974:0:19"
                  },
                  "scope": 3977,
                  "src": "22822:575:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3842,
                    "nodeType": "Block",
                    "src": "23580:591:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3766,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3764,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3756,
                                "src": "23598:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 3765,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "23607:1:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "23598:10:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a2077726f6e67204e46542076616c7565",
                              "id": 3767,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "23610:28:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e505803ce130ba2b210f4e0351e5d5c25d0a89714741c25638627f555e8b4cd5",
                                "typeString": "literal_string \"Inventory: wrong NFT value\""
                              },
                              "value": "Inventory: wrong NFT value"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e505803ce130ba2b210f4e0351e5d5c25d0a89714741c25638627f555e8b4cd5",
                                "typeString": "literal_string \"Inventory: wrong NFT value\""
                              }
                            ],
                            "id": 3763,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "23590:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3768,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23590:49:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3769,
                        "nodeType": "ExpressionStatement",
                        "src": "23590:49:19"
                      },
                      {
                        "assignments": [
                          3771
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3771,
                            "mutability": "mutable",
                            "name": "owner",
                            "nodeType": "VariableDeclaration",
                            "scope": 3842,
                            "src": "23649:13:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3770,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "23649:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3775,
                        "initialValue": {
                          "baseExpression": {
                            "id": 3772,
                            "name": "_owners",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 800,
                            "src": "23665:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 3774,
                          "indexExpression": {
                            "id": 3773,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3754,
                            "src": "23673:2:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "23665:11:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "23649:27:19"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3785,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3777,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3750,
                                "src": "23694:4:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 3782,
                                        "name": "owner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3771,
                                        "src": "23718:5:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 3781,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "23710:7:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint160_$",
                                        "typeString": "type(uint160)"
                                      },
                                      "typeName": {
                                        "id": 3780,
                                        "name": "uint160",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "23710:7:19",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 3783,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "23710:14:19",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  ],
                                  "id": 3779,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "23702:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3778,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "23702:7:19",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 3784,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "23702:23:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "23694:31:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f6e2d6f776e6564204e4654",
                              "id": 3786,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "23727:26:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_cb299a32a7af2eac6d18f568f522d952ea6c98cc6d0ce67299c271d8f74679c8",
                                "typeString": "literal_string \"Inventory: non-owned NFT\""
                              },
                              "value": "Inventory: non-owned NFT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_cb299a32a7af2eac6d18f568f522d952ea6c98cc6d0ce67299c271d8f74679c8",
                                "typeString": "literal_string \"Inventory: non-owned NFT\""
                              }
                            ],
                            "id": 3776,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "23686:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3787,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23686:68:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3788,
                        "nodeType": "ExpressionStatement",
                        "src": "23686:68:19"
                      },
                      {
                        "condition": {
                          "id": 3790,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "23768:11:19",
                          "subExpression": {
                            "id": 3789,
                            "name": "operatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3758,
                            "src": "23769:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3809,
                        "nodeType": "IfStatement",
                        "src": "23764:163:19",
                        "trueBody": {
                          "id": 3808,
                          "nodeType": "Block",
                          "src": "23781:146:19",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 3804,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 3796,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 3794,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 3792,
                                              "name": "owner",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3771,
                                              "src": "23804:5:19",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "&",
                                            "rightExpression": {
                                              "id": 3793,
                                              "name": "_APPROVAL_BIT_TOKEN_OWNER_",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1742,
                                              "src": "23812:26:19",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "23804:34:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "!=",
                                          "rightExpression": {
                                            "hexValue": "30",
                                            "id": 3795,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "23842:1:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "23804:39:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 3797,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "23803:41:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "id": 3803,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "id": 3798,
                                          "name": "_msgSender",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 229,
                                          "src": "23848:10:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                            "typeString": "function () view returns (address payable)"
                                          }
                                        },
                                        "id": 3799,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "23848:12:19",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "baseExpression": {
                                          "id": 3800,
                                          "name": "_nftApprovals",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1754,
                                          "src": "23864:13:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                            "typeString": "mapping(uint256 => address)"
                                          }
                                        },
                                        "id": 3802,
                                        "indexExpression": {
                                          "id": 3801,
                                          "name": "id",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3754,
                                          "src": "23878:2:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "23864:17:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "23848:33:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "23803:78:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "496e76656e746f72793a206e6f6e2d617070726f7665642073656e646572",
                                    "id": 3805,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "23883:32:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_6b20705240a74b98ad3770de0b6354de37c9aed640ae675f48200e7f883462f0",
                                      "typeString": "literal_string \"Inventory: non-approved sender\""
                                    },
                                    "value": "Inventory: non-approved sender"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_6b20705240a74b98ad3770de0b6354de37c9aed640ae675f48200e7f883462f0",
                                      "typeString": "literal_string \"Inventory: non-approved sender\""
                                    }
                                  ],
                                  "id": 3791,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "23795:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 3806,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "23795:121:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3807,
                              "nodeType": "ExpressionStatement",
                              "src": "23795:121:19"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 3820,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 3810,
                              "name": "_owners",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 800,
                              "src": "23936:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 3812,
                            "indexExpression": {
                              "id": 3811,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3754,
                              "src": "23944:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "23936:11:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 3817,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3752,
                                    "src": "23966:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 3816,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "23958:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 3815,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "23958:7:19",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 3818,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "23958:11:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              ],
                              "id": 3814,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "23950:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 3813,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "23950:7:19",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 3819,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "23950:20:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "23936:34:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3821,
                        "nodeType": "ExpressionStatement",
                        "src": "23936:34:19"
                      },
                      {
                        "condition": {
                          "id": 3823,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "23984:8:19",
                          "subExpression": {
                            "id": 3822,
                            "name": "isBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3760,
                            "src": "23985:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3841,
                        "nodeType": "IfStatement",
                        "src": "23980:185:19",
                        "trueBody": {
                          "id": 3840,
                          "nodeType": "Block",
                          "src": "23994:171:19",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3825,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3750,
                                    "src": "24035:4:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 3826,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3752,
                                    "src": "24041:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "hexValue": "31",
                                    "id": 3827,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "24045:1:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    }
                                  ],
                                  "id": 3824,
                                  "name": "_transferNFTUpdateBalances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3870,
                                  "src": "24008:26:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 3828,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "24008:39:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3829,
                              "nodeType": "ExpressionStatement",
                              "src": "24008:39:19"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3831,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3750,
                                    "src": "24090:4:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 3832,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3752,
                                    "src": "24096:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 3835,
                                        "name": "_collectionMaskLength",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 771,
                                        "src": "24128:21:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "id": 3833,
                                        "name": "id",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3754,
                                        "src": "24100:2:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 3834,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "getNonFungibleCollection",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1362,
                                      "src": "24100:27:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 3836,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "24100:50:19",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "hexValue": "31",
                                    "id": 3837,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "24152:1:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    }
                                  ],
                                  "id": 3830,
                                  "name": "_transferNFTUpdateCollection",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3903,
                                  "src": "24061:28:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256,uint256)"
                                  }
                                },
                                "id": 3838,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "24061:93:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3839,
                              "nodeType": "ExpressionStatement",
                              "src": "24061:93:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 3843,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferNFT",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3761,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3750,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 3843,
                        "src": "23434:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3749,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "23434:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3752,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 3843,
                        "src": "23456:10:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3751,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "23456:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3754,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 3843,
                        "src": "23476:10:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3753,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23476:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3756,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 3843,
                        "src": "23496:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3755,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23496:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3758,
                        "mutability": "mutable",
                        "name": "operatable",
                        "nodeType": "VariableDeclaration",
                        "scope": 3843,
                        "src": "23519:15:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3757,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "23519:4:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3760,
                        "mutability": "mutable",
                        "name": "isBatch",
                        "nodeType": "VariableDeclaration",
                        "scope": 3843,
                        "src": "23544:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3759,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "23544:4:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "23424:138:19"
                  },
                  "returnParameters": {
                    "id": 3762,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "23580:0:19"
                  },
                  "scope": 3977,
                  "src": "23403:768:19",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3869,
                    "nodeType": "Block",
                    "src": "24302:256:19",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 3854,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3852,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3845,
                            "src": "24316:4:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 3853,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3847,
                            "src": "24324:2:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "24316:10:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3868,
                        "nodeType": "IfStatement",
                        "src": "24312:240:19",
                        "trueBody": {
                          "id": 3867,
                          "nodeType": "Block",
                          "src": "24328:224:19",
                          "statements": [
                            {
                              "expression": {
                                "id": 3859,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 3855,
                                    "name": "_nftBalances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1750,
                                    "src": "24415:12:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 3857,
                                  "indexExpression": {
                                    "id": 3856,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3845,
                                    "src": "24428:4:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "24415:18:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "id": 3858,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3849,
                                  "src": "24437:6:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "24415:28:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3860,
                              "nodeType": "ExpressionStatement",
                              "src": "24415:28:19"
                            },
                            {
                              "expression": {
                                "id": 3865,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 3861,
                                    "name": "_nftBalances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1750,
                                    "src": "24515:12:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 3863,
                                  "indexExpression": {
                                    "id": 3862,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3847,
                                    "src": "24528:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "24515:16:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 3864,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3849,
                                  "src": "24535:6:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "24515:26:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3866,
                              "nodeType": "ExpressionStatement",
                              "src": "24515:26:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 3870,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferNFTUpdateBalances",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3850,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3845,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 3870,
                        "src": "24222:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3844,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "24222:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3847,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 3870,
                        "src": "24244:10:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3846,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "24244:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3849,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 3870,
                        "src": "24264:14:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3848,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24264:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "24212:72:19"
                  },
                  "returnParameters": {
                    "id": 3851,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "24302:0:19"
                  },
                  "scope": 3977,
                  "src": "24177:381:19",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3902,
                    "nodeType": "Block",
                    "src": "24721:277:19",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 3883,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3881,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3872,
                            "src": "24735:4:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 3882,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3874,
                            "src": "24743:2:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "24735:10:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3901,
                        "nodeType": "IfStatement",
                        "src": "24731:261:19",
                        "trueBody": {
                          "id": 3900,
                          "nodeType": "Block",
                          "src": "24747:245:19",
                          "statements": [
                            {
                              "expression": {
                                "id": 3890,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 3884,
                                      "name": "_balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 792,
                                      "src": "24834:9:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(uint256 => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 3887,
                                    "indexExpression": {
                                      "id": 3885,
                                      "name": "collectionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3876,
                                      "src": "24844:12:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "24834:23:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 3888,
                                  "indexExpression": {
                                    "id": 3886,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3872,
                                    "src": "24858:4:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "24834:29:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "id": 3889,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3878,
                                  "src": "24867:6:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "24834:39:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3891,
                              "nodeType": "ExpressionStatement",
                              "src": "24834:39:19"
                            },
                            {
                              "expression": {
                                "id": 3898,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 3892,
                                      "name": "_balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 792,
                                      "src": "24944:9:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(uint256 => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 3895,
                                    "indexExpression": {
                                      "id": 3893,
                                      "name": "collectionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3876,
                                      "src": "24954:12:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "24944:23:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 3896,
                                  "indexExpression": {
                                    "id": 3894,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3874,
                                    "src": "24968:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "24944:27:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 3897,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3878,
                                  "src": "24975:6:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "24944:37:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3899,
                              "nodeType": "ExpressionStatement",
                              "src": "24944:37:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 3903,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferNFTUpdateCollection",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3879,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3872,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 3903,
                        "src": "24611:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3871,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "24611:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3874,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 3903,
                        "src": "24633:10:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3873,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "24633:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3876,
                        "mutability": "mutable",
                        "name": "collectionId",
                        "nodeType": "VariableDeclaration",
                        "scope": 3903,
                        "src": "24653:20:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3875,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24653:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3878,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 3903,
                        "src": "24683:14:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3877,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24683:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "24601:102:19"
                  },
                  "returnParameters": {
                    "id": 3880,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "24721:0:19"
                  },
                  "scope": 3977,
                  "src": "24564:434:19",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3943,
                    "nodeType": "Block",
                    "src": "25291:790:19",
                    "statements": [
                      {
                        "assignments": [
                          3912
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3912,
                            "mutability": "mutable",
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "scope": 3943,
                            "src": "25301:12:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 3911,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "25301:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3913,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "25301:12:19"
                      },
                      {
                        "assignments": [
                          3915
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3915,
                            "mutability": "mutable",
                            "name": "result",
                            "nodeType": "VariableDeclaration",
                            "scope": 3943,
                            "src": "25323:11:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 3914,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "25323:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3916,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "25323:11:19"
                      },
                      {
                        "assignments": [
                          3918
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3918,
                            "mutability": "mutable",
                            "name": "staticCallData",
                            "nodeType": "VariableDeclaration",
                            "scope": 3943,
                            "src": "25344:27:19",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 3917,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "25344:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3930,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3922,
                                    "name": "IERC165",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 218,
                                    "src": "25402:7:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC165_$218_$",
                                      "typeString": "type(contract IERC165)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC165_$218_$",
                                      "typeString": "type(contract IERC165)"
                                    }
                                  ],
                                  "id": 3921,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "25397:4:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 3923,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "25397:13:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC165_$218",
                                  "typeString": "type(contract IERC165)"
                                }
                              },
                              "id": 3924,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "25397:25:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3926,
                                    "name": "IERC1155TokenReceiver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1698,
                                    "src": "25429:21:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$1698_$",
                                      "typeString": "type(contract IERC1155TokenReceiver)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$1698_$",
                                      "typeString": "type(contract IERC1155TokenReceiver)"
                                    }
                                  ],
                                  "id": 3925,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "25424:4:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 3927,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "25424:27:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155TokenReceiver_$1698",
                                  "typeString": "type(contract IERC1155TokenReceiver)"
                                }
                              },
                              "id": 3928,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "25424:39:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            ],
                            "expression": {
                              "id": 3919,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "25374:3:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 3920,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodeWithSelector",
                            "nodeType": "MemberAccess",
                            "src": "25374:22:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes4) pure returns (bytes memory)"
                            }
                          },
                          "id": 3929,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "25374:90:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "25344:120:19"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "25483:380:19",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25497:41:19",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25517:4:19",
                                    "type": "",
                                    "value": "0x20"
                                  },
                                  {
                                    "name": "staticCallData",
                                    "nodeType": "YulIdentifier",
                                    "src": "25523:14:19"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25513:3:19"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25513:25:19"
                              },
                              "variables": [
                                {
                                  "name": "call_ptr",
                                  "nodeType": "YulTypedName",
                                  "src": "25501:8:19",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25551:38:19",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "staticCallData",
                                    "nodeType": "YulIdentifier",
                                    "src": "25574:14:19"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "25568:5:19"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25568:21:19"
                              },
                              "variables": [
                                {
                                  "name": "call_size",
                                  "nodeType": "YulTypedName",
                                  "src": "25555:9:19",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25602:25:19",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25622:4:19",
                                    "type": "",
                                    "value": "0x40"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "25616:5:19"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25616:11:19"
                              },
                              "variables": [
                                {
                                  "name": "output",
                                  "nodeType": "YulTypedName",
                                  "src": "25606:6:19",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "output",
                                    "nodeType": "YulIdentifier",
                                    "src": "25706:6:19"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25714:3:19",
                                    "type": "",
                                    "value": "0x0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25699:6:19"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25699:19:19"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25699:19:19"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25731:74:19",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25753:5:19",
                                    "type": "",
                                    "value": "10000"
                                  },
                                  {
                                    "name": "_contract",
                                    "nodeType": "YulIdentifier",
                                    "src": "25760:9:19"
                                  },
                                  {
                                    "name": "call_ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "25771:8:19"
                                  },
                                  {
                                    "name": "call_size",
                                    "nodeType": "YulIdentifier",
                                    "src": "25781:9:19"
                                  },
                                  {
                                    "name": "output",
                                    "nodeType": "YulIdentifier",
                                    "src": "25792:6:19"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25800:4:19",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "staticcall",
                                  "nodeType": "YulIdentifier",
                                  "src": "25742:10:19"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25742:63:19"
                              },
                              "variableNames": [
                                {
                                  "name": "success",
                                  "nodeType": "YulIdentifier",
                                  "src": "25731:7:19"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25830:23:19",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "output",
                                    "nodeType": "YulIdentifier",
                                    "src": "25846:6:19"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "25840:5:19"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25840:13:19"
                              },
                              "variableNames": [
                                {
                                  "name": "result",
                                  "nodeType": "YulIdentifier",
                                  "src": "25830:6:19"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 3906,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "25760:9:19",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3915,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "25830:6:19",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3918,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "25523:14:19",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3918,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "25574:14:19",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3912,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "25731:7:19",
                            "valueSize": 1
                          }
                        ],
                        "id": 3931,
                        "nodeType": "InlineAssembly",
                        "src": "25474:389:19"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3936,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 3933,
                                  "name": "gasleft",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -7,
                                  "src": "26024:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                                    "typeString": "function () view returns (uint256)"
                                  }
                                },
                                "id": 3934,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "26024:9:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "313538",
                                "id": 3935,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "26036:3:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_158_by_1",
                                  "typeString": "int_const 158"
                                },
                                "value": "158"
                              },
                              "src": "26024:15:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 3932,
                            "name": "assert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -3,
                            "src": "26017:6:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 3937,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26017:23:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3938,
                        "nodeType": "ExpressionStatement",
                        "src": "26017:23:19"
                      },
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 3941,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3939,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3912,
                            "src": "26057:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "id": 3940,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3915,
                            "src": "26068:6:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "26057:17:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 3910,
                        "id": 3942,
                        "nodeType": "Return",
                        "src": "26050:24:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3904,
                    "nodeType": "StructuredDocumentation",
                    "src": "25004:201:19",
                    "text": " Queries whether a contract implements ERC1155TokenReceiver.\n @param _contract address of the contract.\n @return wheter the given contract implements ERC1155TokenReceiver."
                  },
                  "id": 3944,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_isERC1155TokenReceiver",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3907,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3906,
                        "mutability": "mutable",
                        "name": "_contract",
                        "nodeType": "VariableDeclaration",
                        "scope": 3944,
                        "src": "25243:17:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3905,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "25243:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "25242:19:19"
                  },
                  "returnParameters": {
                    "id": 3910,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3909,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3944,
                        "src": "25285:4:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3908,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "25285:4:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "25284:6:19"
                  },
                  "scope": 3977,
                  "src": "25210:871:19",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3975,
                    "nodeType": "Block",
                    "src": "26637:197:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 3971,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 3961,
                                      "name": "_msgSender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 229,
                                      "src": "26705:10:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                        "typeString": "function () view returns (address payable)"
                                      }
                                    },
                                    "id": 3962,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "26705:12:19",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 3963,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3947,
                                    "src": "26719:4:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 3964,
                                    "name": "nftId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3951,
                                    "src": "26725:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 3965,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3953,
                                    "src": "26732:4:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 3958,
                                        "name": "to",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3949,
                                        "src": "26684:2:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 3957,
                                      "name": "IERC721Receiver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5342,
                                      "src": "26668:15:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$5342_$",
                                        "typeString": "type(contract IERC721Receiver)"
                                      }
                                    },
                                    "id": 3959,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "26668:19:19",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC721Receiver_$5342",
                                      "typeString": "contract IERC721Receiver"
                                    }
                                  },
                                  "id": 3960,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "onERC721Received",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5341,
                                  "src": "26668:36:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                    "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)"
                                  }
                                },
                                "id": 3966,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "26668:69:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 3968,
                                      "name": "IERC721Receiver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5342,
                                      "src": "26746:15:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$5342_$",
                                        "typeString": "type(contract IERC721Receiver)"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$5342_$",
                                        "typeString": "type(contract IERC721Receiver)"
                                      }
                                    ],
                                    "id": 3967,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -27,
                                    "src": "26741:4:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 3969,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "26741:21:19",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721Receiver_$5342",
                                    "typeString": "type(contract IERC721Receiver)"
                                  }
                                },
                                "id": 3970,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "interfaceId",
                                "nodeType": "MemberAccess",
                                "src": "26741:33:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "26668:106:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207472616e736665722072656675736564",
                              "id": 3972,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "26788:29:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f586869b43ba3901b74c780121b14f86de66ae1e2d38e1ac43de058c29664070",
                                "typeString": "literal_string \"Inventory: transfer refused\""
                              },
                              "value": "Inventory: transfer refused"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f586869b43ba3901b74c780121b14f86de66ae1e2d38e1ac43de058c29664070",
                                "typeString": "literal_string \"Inventory: transfer refused\""
                              }
                            ],
                            "id": 3956,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "26647:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3973,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26647:180:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3974,
                        "nodeType": "ExpressionStatement",
                        "src": "26647:180:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3945,
                    "nodeType": "StructuredDocumentation",
                    "src": "26087:407:19",
                    "text": " Calls {IERC721Receiver-onERC721Received} on a target contract.\n @dev Reverts if `to` is not a contract.\n @dev Reverts if the call to the target fails or is refused.\n @param from Previous token owner.\n @param to New token owner.\n @param nftId Identifier of the token transferred.\n @param data Optional data to send along with the receiver contract call."
                  },
                  "id": 3976,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_callOnERC721Received",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3954,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3947,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 3976,
                        "src": "26539:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3946,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "26539:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3949,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 3976,
                        "src": "26561:10:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3948,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "26561:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3951,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 3976,
                        "src": "26581:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3950,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "26581:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3953,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 3976,
                        "src": "26604:17:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3952,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "26604:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "26529:98:19"
                  },
                  "returnParameters": {
                    "id": 3955,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "26637:0:19"
                  },
                  "scope": 3977,
                  "src": "26499:335:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 3978,
              "src": "1301:25535:19"
            }
          ],
          "src": "33:26804:19"
        },
        "id": 19
      },
      "contracts/token/ERC1155721/ERC1155721InventoryBurnable.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155721/ERC1155721InventoryBurnable.sol",
          "exportedSymbols": {
            "ERC1155721Inventory": [
              3977
            ],
            "ERC1155721InventoryBurnable": [
              4620
            ],
            "ERC1155InventoryIdentifiersLib": [
              1381
            ],
            "IERC1155721InventoryBurnable": [
              4803
            ],
            "IERC165": [
              218
            ]
          },
          "id": 4621,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3979,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:20"
            },
            {
              "absolutePath": "contracts/token/ERC1155/ERC1155InventoryIdentifiersLib.sol",
              "file": "./../ERC1155/ERC1155InventoryIdentifiersLib.sol",
              "id": 3981,
              "nodeType": "ImportDirective",
              "scope": 4621,
              "sourceUnit": 1382,
              "src": "66:95:20",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 3980,
                    "name": "ERC1155InventoryIdentifiersLib",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:30:20",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "id": 3983,
              "nodeType": "ImportDirective",
              "scope": 4621,
              "sourceUnit": 219,
              "src": "162:93:20",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 3982,
                    "name": "IERC165",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "170:7:20",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155721/interfaces/IERC1155721InventoryBurnable.sol",
              "file": "./interfaces/IERC1155721InventoryBurnable.sol",
              "id": 3985,
              "nodeType": "ImportDirective",
              "scope": 4621,
              "sourceUnit": 4804,
              "src": "256:91:20",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 3984,
                    "name": "IERC1155721InventoryBurnable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "264:28:20",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155721/ERC1155721Inventory.sol",
              "file": "./ERC1155721Inventory.sol",
              "id": 3987,
              "nodeType": "ImportDirective",
              "scope": 4621,
              "sourceUnit": 3978,
              "src": "348:62:20",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 3986,
                    "name": "ERC1155721Inventory",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "356:19:20",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 3989,
                    "name": "IERC1155721InventoryBurnable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4803,
                    "src": "706:28:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155721InventoryBurnable_$4803",
                      "typeString": "contract IERC1155721InventoryBurnable"
                    }
                  },
                  "id": 3990,
                  "nodeType": "InheritanceSpecifier",
                  "src": "706:28:20"
                },
                {
                  "baseName": {
                    "id": 3991,
                    "name": "ERC1155721Inventory",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3977,
                    "src": "736:19:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155721Inventory_$3977",
                      "typeString": "contract ERC1155721Inventory"
                    }
                  },
                  "id": 3992,
                  "nodeType": "InheritanceSpecifier",
                  "src": "736:19:20"
                }
              ],
              "contractDependencies": [
                218,
                239,
                1299,
                1496,
                1599,
                1636,
                1648,
                1660,
                3977,
                4768,
                4803,
                5285,
                5300,
                5324
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 3988,
                "nodeType": "StructuredDocumentation",
                "src": "412:244:20",
                "text": " @title ERC1155721Inventory, an ERC1155Inventory with additional support for ERC721, burnable version.\n @dev The function `uri(uint256)` needs to be implemented by a child contract, for example with the help of `NFTBaseMetadataURI`."
              },
              "fullyImplemented": false,
              "id": 4620,
              "linearizedBaseContracts": [
                4620,
                3977,
                1299,
                1648,
                1660,
                5324,
                4768,
                5300,
                5285,
                1599,
                1636,
                1496,
                218,
                239,
                4803
              ],
              "name": "ERC1155721InventoryBurnable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 3995,
                  "libraryName": {
                    "id": 3993,
                    "name": "ERC1155InventoryIdentifiersLib",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1381,
                    "src": "768:30:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155InventoryIdentifiersLib_$1381",
                      "typeString": "library ERC1155InventoryIdentifiersLib"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "762:49:20",
                  "typeName": {
                    "id": 3994,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "803:7:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "body": {
                    "id": 4009,
                    "nodeType": "Block",
                    "src": "991:2:20",
                    "statements": []
                  },
                  "id": 4010,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 4004,
                          "name": "name_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3997,
                          "src": "953:5:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "id": 4005,
                          "name": "symbol_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3999,
                          "src": "960:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "id": 4006,
                          "name": "collectionMaskLength",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4001,
                          "src": "969:20:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 4007,
                      "modifierName": {
                        "id": 4003,
                        "name": "ERC1155721Inventory",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3977,
                        "src": "933:19:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC1155721Inventory_$3977_$",
                          "typeString": "type(contract ERC1155721Inventory)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "933:57:20"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4002,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3997,
                        "mutability": "mutable",
                        "name": "name_",
                        "nodeType": "VariableDeclaration",
                        "scope": 4010,
                        "src": "838:19:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3996,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "838:6:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3999,
                        "mutability": "mutable",
                        "name": "symbol_",
                        "nodeType": "VariableDeclaration",
                        "scope": 4010,
                        "src": "867:21:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3998,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "867:6:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4001,
                        "mutability": "mutable",
                        "name": "collectionMaskLength",
                        "nodeType": "VariableDeclaration",
                        "scope": 4010,
                        "src": "898:28:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4000,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "898:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "828:104:20"
                  },
                  "returnParameters": {
                    "id": 4008,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "991:0:20"
                  },
                  "scope": 4620,
                  "src": "817:176:20",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    1811
                  ],
                  "body": {
                    "id": 4031,
                    "nodeType": "Block",
                    "src": "1247:125:20",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 4029,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 4024,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 4019,
                              "name": "interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4013,
                              "src": "1264:11:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4021,
                                    "name": "IERC1155721InventoryBurnable",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4803,
                                    "src": "1284:28:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155721InventoryBurnable_$4803_$",
                                      "typeString": "type(contract IERC1155721InventoryBurnable)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155721InventoryBurnable_$4803_$",
                                      "typeString": "type(contract IERC1155721InventoryBurnable)"
                                    }
                                  ],
                                  "id": 4020,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "1279:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 4022,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1279:34:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155721InventoryBurnable_$4803",
                                  "typeString": "type(contract IERC1155721InventoryBurnable)"
                                }
                              },
                              "id": 4023,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "1279:46:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "1264:61:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 4027,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4013,
                                "src": "1353:11:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 4025,
                                "name": "super",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -25,
                                "src": "1329:5:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_super$_ERC1155721InventoryBurnable_$4620",
                                  "typeString": "contract super ERC1155721InventoryBurnable"
                                }
                              },
                              "id": 4026,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1811,
                              "src": "1329:23:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 4028,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1329:36:20",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1264:101:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 4018,
                        "id": 4030,
                        "nodeType": "Return",
                        "src": "1257:108:20"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4011,
                    "nodeType": "StructuredDocumentation",
                    "src": "1128:23:20",
                    "text": "@inheritdoc IERC165"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 4032,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4015,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1223:8:20"
                  },
                  "parameters": {
                    "id": 4014,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4013,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nodeType": "VariableDeclaration",
                        "scope": 4032,
                        "src": "1183:18:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 4012,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1183:6:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1182:20:20"
                  },
                  "returnParameters": {
                    "id": 4018,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4017,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4032,
                        "src": "1241:4:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4016,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1241:4:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1240:6:20"
                  },
                  "scope": 4620,
                  "src": "1156:216:20",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    4781
                  ],
                  "body": {
                    "id": 4106,
                    "nodeType": "Block",
                    "src": "1669:511:20",
                    "statements": [
                      {
                        "assignments": [
                          4044
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4044,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 4106,
                            "src": "1679:14:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 4043,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1679:7:20",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4047,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 4045,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 229,
                            "src": "1696:10:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 4046,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1696:12:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1679:29:20"
                      },
                      {
                        "assignments": [
                          4049
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4049,
                            "mutability": "mutable",
                            "name": "operatable",
                            "nodeType": "VariableDeclaration",
                            "scope": 4106,
                            "src": "1718:15:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 4048,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "1718:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4054,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 4051,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4035,
                              "src": "1750:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4052,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4044,
                              "src": "1756:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4050,
                            "name": "_isOperatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1232,
                            "src": "1736:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view returns (bool)"
                            }
                          },
                          "id": 4053,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1736:27:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1718:45:20"
                      },
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 4055,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4037,
                              "src": "1778:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 4056,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isFungibleToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1321,
                            "src": "1778:18:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (bool)"
                            }
                          },
                          "id": 4057,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1778:20:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "arguments": [
                              {
                                "id": 4068,
                                "name": "_collectionMaskLength",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 771,
                                "src": "1899:21:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 4066,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4037,
                                "src": "1877:2:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4067,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "isNonFungibleToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1345,
                              "src": "1877:21:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (bool)"
                              }
                            },
                            "id": 4069,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1877:44:20",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 4092,
                            "nodeType": "Block",
                            "src": "2047:60:20",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "hexValue": "496e76656e746f72793a206e6f74206120746f6b656e206964",
                                      "id": 4089,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2068:27:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                        "typeString": "literal_string \"Inventory: not a token id\""
                                      },
                                      "value": "Inventory: not a token id"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                        "typeString": "literal_string \"Inventory: not a token id\""
                                      }
                                    ],
                                    "id": 4088,
                                    "name": "revert",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      -19,
                                      -19
                                    ],
                                    "referencedDeclaration": -19,
                                    "src": "2061:6:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                      "typeString": "function (string memory) pure"
                                    }
                                  },
                                  "id": 4090,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2061:35:20",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 4091,
                                "nodeType": "ExpressionStatement",
                                "src": "2061:35:20"
                              }
                            ]
                          },
                          "id": 4093,
                          "nodeType": "IfStatement",
                          "src": "1873:234:20",
                          "trueBody": {
                            "id": 4087,
                            "nodeType": "Block",
                            "src": "1923:118:20",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 4071,
                                      "name": "from",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4035,
                                      "src": "1946:4:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 4072,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4037,
                                      "src": "1952:2:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 4073,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4039,
                                      "src": "1956:5:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 4074,
                                      "name": "operatable",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4049,
                                      "src": "1963:10:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    {
                                      "hexValue": "66616c7365",
                                      "id": 4075,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1975:5:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "id": 4070,
                                    "name": "_burnNFT",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4595,
                                    "src": "1937:8:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$_t_bool_$returns$__$",
                                      "typeString": "function (address,uint256,uint256,bool,bool)"
                                    }
                                  },
                                  "id": 4076,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1937:44:20",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 4077,
                                "nodeType": "ExpressionStatement",
                                "src": "1937:44:20"
                              },
                              {
                                "eventCall": {
                                  "arguments": [
                                    {
                                      "id": 4079,
                                      "name": "from",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4035,
                                      "src": "2009:4:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "hexValue": "30",
                                          "id": 4082,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "2023:1:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          }
                                        ],
                                        "id": 4081,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "2015:7:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 4080,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "2015:7:20",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 4083,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2015:10:20",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    {
                                      "id": 4084,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4037,
                                      "src": "2027:2:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 4078,
                                    "name": "Transfer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4645,
                                    "src": "2000:8:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                      "typeString": "function (address,address,uint256)"
                                    }
                                  },
                                  "id": 4085,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2000:30:20",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 4086,
                                "nodeType": "EmitStatement",
                                "src": "1995:35:20"
                              }
                            ]
                          }
                        },
                        "id": 4094,
                        "nodeType": "IfStatement",
                        "src": "1774:333:20",
                        "trueBody": {
                          "id": 4065,
                          "nodeType": "Block",
                          "src": "1800:67:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4059,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4035,
                                    "src": "1828:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4060,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4037,
                                    "src": "1834:2:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 4061,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4039,
                                    "src": "1838:5:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 4062,
                                    "name": "operatable",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4049,
                                    "src": "1845:10:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 4058,
                                  "name": "_burnFungible",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4510,
                                  "src": "1814:13:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                                    "typeString": "function (address,uint256,uint256,bool)"
                                  }
                                },
                                "id": 4063,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1814:42:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4064,
                              "nodeType": "ExpressionStatement",
                              "src": "1814:42:20"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 4096,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4044,
                              "src": "2137:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4097,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4035,
                              "src": "2145:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 4100,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2159:1:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 4099,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2151:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 4098,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2151:7:20",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 4101,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2151:10:20",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 4102,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4037,
                              "src": "2163:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4103,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4039,
                              "src": "2167:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4095,
                            "name": "TransferSingle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1396,
                            "src": "2122:14:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 4104,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2122:51:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4105,
                        "nodeType": "EmitStatement",
                        "src": "2117:56:20"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4033,
                    "nodeType": "StructuredDocumentation",
                    "src": "1507:44:20",
                    "text": "@inheritdoc IERC1155721InventoryBurnable"
                  },
                  "functionSelector": "124d91e5",
                  "id": 4107,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burnFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4041,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1660:8:20"
                  },
                  "parameters": {
                    "id": 4040,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4035,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4107,
                        "src": "1583:12:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4034,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1583:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4037,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 4107,
                        "src": "1605:10:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4036,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1605:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4039,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 4107,
                        "src": "1625:13:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4038,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1625:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1573:71:20"
                  },
                  "returnParameters": {
                    "id": 4042,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1669:0:20"
                  },
                  "scope": 4620,
                  "src": "1556:624:20",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    4793
                  ],
                  "body": {
                    "id": 4295,
                    "nodeType": "Block",
                    "src": "2373:1823:20",
                    "statements": [
                      {
                        "assignments": [
                          4121
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4121,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 4295,
                            "src": "2383:14:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4120,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2383:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4124,
                        "initialValue": {
                          "expression": {
                            "id": 4122,
                            "name": "ids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4113,
                            "src": "2400:3:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 4123,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "2400:10:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2383:27:20"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4129,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4126,
                                "name": "length",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4121,
                                "src": "2428:6:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 4127,
                                  "name": "values",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4116,
                                  "src": "2438:6:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 4128,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "2438:13:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2428:23:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a20696e636f6e73697374656e7420617272617973",
                              "id": 4130,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2453:32:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7a126caadb5177dc3b65272d4b18471177661f27977eda64cf57724e2b12039b",
                                "typeString": "literal_string \"Inventory: inconsistent arrays\""
                              },
                              "value": "Inventory: inconsistent arrays"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7a126caadb5177dc3b65272d4b18471177661f27977eda64cf57724e2b12039b",
                                "typeString": "literal_string \"Inventory: inconsistent arrays\""
                              }
                            ],
                            "id": 4125,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2420:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4131,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2420:66:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4132,
                        "nodeType": "ExpressionStatement",
                        "src": "2420:66:20"
                      },
                      {
                        "assignments": [
                          4134
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4134,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 4295,
                            "src": "2497:14:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 4133,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2497:7:20",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4137,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 4135,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 229,
                            "src": "2514:10:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 4136,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2514:12:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2497:29:20"
                      },
                      {
                        "assignments": [
                          4139
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4139,
                            "mutability": "mutable",
                            "name": "operatable",
                            "nodeType": "VariableDeclaration",
                            "scope": 4295,
                            "src": "2536:15:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 4138,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "2536:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4144,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 4141,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4110,
                              "src": "2568:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4142,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4134,
                              "src": "2574:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4140,
                            "name": "_isOperatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1232,
                            "src": "2554:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view returns (bool)"
                            }
                          },
                          "id": 4143,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2554:27:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2536:45:20"
                      },
                      {
                        "assignments": [
                          4146
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4146,
                            "mutability": "mutable",
                            "name": "nfCollectionId",
                            "nodeType": "VariableDeclaration",
                            "scope": 4295,
                            "src": "2592:22:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4145,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2592:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4147,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2592:22:20"
                      },
                      {
                        "assignments": [
                          4149
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4149,
                            "mutability": "mutable",
                            "name": "nfCollectionCount",
                            "nodeType": "VariableDeclaration",
                            "scope": 4295,
                            "src": "2624:25:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4148,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2624:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4150,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2624:25:20"
                      },
                      {
                        "assignments": [
                          4152
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4152,
                            "mutability": "mutable",
                            "name": "nftsCount",
                            "nodeType": "VariableDeclaration",
                            "scope": 4295,
                            "src": "2659:17:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4151,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2659:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4153,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2659:17:20"
                      },
                      {
                        "body": {
                          "id": 4261,
                          "nodeType": "Block",
                          "src": "2720:1115:20",
                          "statements": [
                            {
                              "assignments": [
                                4164
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4164,
                                  "mutability": "mutable",
                                  "name": "id",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 4261,
                                  "src": "2734:10:20",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 4163,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2734:7:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4168,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 4165,
                                  "name": "ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4113,
                                  "src": "2747:3:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 4167,
                                "indexExpression": {
                                  "id": 4166,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4155,
                                  "src": "2751:1:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2747:6:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2734:19:20"
                            },
                            {
                              "condition": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 4169,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4164,
                                    "src": "2771:2:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4170,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "isFungibleToken",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1321,
                                  "src": "2771:18:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256) pure returns (bool)"
                                  }
                                },
                                "id": 4171,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2771:20:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "arguments": [
                                    {
                                      "id": 4184,
                                      "name": "_collectionMaskLength",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 771,
                                      "src": "2904:21:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 4182,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4164,
                                      "src": "2882:2:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 4183,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "isNonFungibleToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1345,
                                    "src": "2882:21:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (bool)"
                                    }
                                  },
                                  "id": 4185,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2882:44:20",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "id": 4258,
                                  "nodeType": "Block",
                                  "src": "3757:68:20",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "hexValue": "496e76656e746f72793a206e6f74206120746f6b656e206964",
                                            "id": 4255,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "3782:27:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                              "typeString": "literal_string \"Inventory: not a token id\""
                                            },
                                            "value": "Inventory: not a token id"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_stringliteral_bc5327edba80b9e90a14bfb34715edc56a60101d4e5c551f35c744072818a69b",
                                              "typeString": "literal_string \"Inventory: not a token id\""
                                            }
                                          ],
                                          "id": 4254,
                                          "name": "revert",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [
                                            -19,
                                            -19
                                          ],
                                          "referencedDeclaration": -19,
                                          "src": "3775:6:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                            "typeString": "function (string memory) pure"
                                          }
                                        },
                                        "id": 4256,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3775:35:20",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 4257,
                                      "nodeType": "ExpressionStatement",
                                      "src": "3775:35:20"
                                    }
                                  ]
                                },
                                "id": 4259,
                                "nodeType": "IfStatement",
                                "src": "2878:947:20",
                                "trueBody": {
                                  "id": 4253,
                                  "nodeType": "Block",
                                  "src": "2928:823:20",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 4187,
                                            "name": "from",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4110,
                                            "src": "2955:4:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 4188,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4164,
                                            "src": "2961:2:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "baseExpression": {
                                              "id": 4189,
                                              "name": "values",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4116,
                                              "src": "2965:6:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                "typeString": "uint256[] memory"
                                              }
                                            },
                                            "id": 4191,
                                            "indexExpression": {
                                              "id": 4190,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4155,
                                              "src": "2972:1:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "2965:9:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 4192,
                                            "name": "operatable",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4139,
                                            "src": "2976:10:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          {
                                            "hexValue": "74727565",
                                            "id": 4193,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "bool",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "2988:4:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            },
                                            "value": "true"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            },
                                            {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          ],
                                          "id": 4186,
                                          "name": "_burnNFT",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4595,
                                          "src": "2946:8:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$_t_bool_$returns$__$",
                                            "typeString": "function (address,uint256,uint256,bool,bool)"
                                          }
                                        },
                                        "id": 4194,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2946:47:20",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 4195,
                                      "nodeType": "ExpressionStatement",
                                      "src": "2946:47:20"
                                    },
                                    {
                                      "eventCall": {
                                        "arguments": [
                                          {
                                            "id": 4197,
                                            "name": "from",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4110,
                                            "src": "3025:4:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "hexValue": "30",
                                                "id": 4200,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "3039:1:20",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_0_by_1",
                                                  "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_rational_0_by_1",
                                                  "typeString": "int_const 0"
                                                }
                                              ],
                                              "id": 4199,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "3031:7:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                              },
                                              "typeName": {
                                                "id": 4198,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "3031:7:20",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 4201,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3031:10:20",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address_payable",
                                              "typeString": "address payable"
                                            }
                                          },
                                          {
                                            "id": 4202,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4164,
                                            "src": "3043:2:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_address_payable",
                                              "typeString": "address payable"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 4196,
                                          "name": "Transfer",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4645,
                                          "src": "3016:8:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                            "typeString": "function (address,address,uint256)"
                                          }
                                        },
                                        "id": 4203,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3016:30:20",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 4204,
                                      "nodeType": "EmitStatement",
                                      "src": "3011:35:20"
                                    },
                                    {
                                      "assignments": [
                                        4206
                                      ],
                                      "declarations": [
                                        {
                                          "constant": false,
                                          "id": 4206,
                                          "mutability": "mutable",
                                          "name": "nextCollectionId",
                                          "nodeType": "VariableDeclaration",
                                          "scope": 4253,
                                          "src": "3064:24:20",
                                          "stateVariable": false,
                                          "storageLocation": "default",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "typeName": {
                                            "id": 4205,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "3064:7:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "visibility": "internal"
                                        }
                                      ],
                                      "id": 4211,
                                      "initialValue": {
                                        "arguments": [
                                          {
                                            "id": 4209,
                                            "name": "_collectionMaskLength",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 771,
                                            "src": "3119:21:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "id": 4207,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4164,
                                            "src": "3091:2:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 4208,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "getNonFungibleCollection",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 1362,
                                          "src": "3091:27:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 4210,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3091:50:20",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "VariableDeclarationStatement",
                                      "src": "3064:77:20"
                                    },
                                    {
                                      "condition": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 4214,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 4212,
                                          "name": "nfCollectionId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4146,
                                          "src": "3163:14:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "hexValue": "30",
                                          "id": 4213,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "3181:1:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "src": "3163:19:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "falseBody": {
                                        "id": 4251,
                                        "nodeType": "Block",
                                        "src": "3307:430:20",
                                        "statements": [
                                          {
                                            "condition": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 4226,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 4224,
                                                "name": "nextCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4206,
                                                "src": "3333:16:20",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "!=",
                                              "rightExpression": {
                                                "id": 4225,
                                                "name": "nfCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4146,
                                                "src": "3353:14:20",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "3333:34:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "falseBody": {
                                              "id": 4249,
                                              "nodeType": "Block",
                                              "src": "3651:68:20",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "id": 4247,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "UnaryOperation",
                                                    "operator": "++",
                                                    "prefix": true,
                                                    "src": "3677:19:20",
                                                    "subExpression": {
                                                      "id": 4246,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 4149,
                                                      "src": "3679:17:20",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 4248,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "3677:19:20"
                                                }
                                              ]
                                            },
                                            "id": 4250,
                                            "nodeType": "IfStatement",
                                            "src": "3329:390:20",
                                            "trueBody": {
                                              "id": 4245,
                                              "nodeType": "Block",
                                              "src": "3369:276:20",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "arguments": [
                                                      {
                                                        "id": 4228,
                                                        "name": "from",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4110,
                                                        "src": "3420:4:20",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      },
                                                      {
                                                        "id": 4229,
                                                        "name": "nfCollectionId",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4146,
                                                        "src": "3426:14:20",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      {
                                                        "id": 4230,
                                                        "name": "nfCollectionCount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4149,
                                                        "src": "3442:17:20",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      ],
                                                      "id": 4227,
                                                      "name": "_burnNFTUpdateCollection",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 4619,
                                                      "src": "3395:24:20",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                                        "typeString": "function (address,uint256,uint256)"
                                                      }
                                                    },
                                                    "id": 4231,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3395:65:20",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_tuple$__$",
                                                      "typeString": "tuple()"
                                                    }
                                                  },
                                                  "id": 4232,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "3395:65:20"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 4235,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 4233,
                                                      "name": "nfCollectionId",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 4146,
                                                      "src": "3486:14:20",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                      "id": 4234,
                                                      "name": "nextCollectionId",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 4206,
                                                      "src": "3503:16:20",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "3486:33:20",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 4236,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "3486:33:20"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 4239,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 4237,
                                                      "name": "nftsCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 4152,
                                                      "src": "3545:9:20",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "+=",
                                                    "rightHandSide": {
                                                      "id": 4238,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 4149,
                                                      "src": "3558:17:20",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "3545:30:20",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 4240,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "3545:30:20"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 4243,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 4241,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 4149,
                                                      "src": "3601:17:20",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                      "hexValue": "31",
                                                      "id": 4242,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "3621:1:20",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_1_by_1",
                                                        "typeString": "int_const 1"
                                                      },
                                                      "value": "1"
                                                    },
                                                    "src": "3601:21:20",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 4244,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "3601:21:20"
                                                }
                                              ]
                                            }
                                          }
                                        ]
                                      },
                                      "id": 4252,
                                      "nodeType": "IfStatement",
                                      "src": "3159:578:20",
                                      "trueBody": {
                                        "id": 4223,
                                        "nodeType": "Block",
                                        "src": "3184:117:20",
                                        "statements": [
                                          {
                                            "expression": {
                                              "id": 4217,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "id": 4215,
                                                "name": "nfCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4146,
                                                "src": "3206:14:20",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "id": 4216,
                                                "name": "nextCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4206,
                                                "src": "3223:16:20",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "3206:33:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 4218,
                                            "nodeType": "ExpressionStatement",
                                            "src": "3206:33:20"
                                          },
                                          {
                                            "expression": {
                                              "id": 4221,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "id": 4219,
                                                "name": "nfCollectionCount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4149,
                                                "src": "3261:17:20",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "hexValue": "31",
                                                "id": 4220,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "3281:1:20",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_1_by_1",
                                                  "typeString": "int_const 1"
                                                },
                                                "value": "1"
                                              },
                                              "src": "3261:21:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 4222,
                                            "nodeType": "ExpressionStatement",
                                            "src": "3261:21:20"
                                          }
                                        ]
                                      }
                                    }
                                  ]
                                }
                              },
                              "id": 4260,
                              "nodeType": "IfStatement",
                              "src": "2767:1058:20",
                              "trueBody": {
                                "id": 4181,
                                "nodeType": "Block",
                                "src": "2793:79:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 4173,
                                          "name": "from",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4110,
                                          "src": "2825:4:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 4174,
                                          "name": "id",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4164,
                                          "src": "2831:2:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "baseExpression": {
                                            "id": 4175,
                                            "name": "values",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4116,
                                            "src": "2835:6:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                              "typeString": "uint256[] memory"
                                            }
                                          },
                                          "id": 4177,
                                          "indexExpression": {
                                            "id": 4176,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4155,
                                            "src": "2842:1:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "2835:9:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 4178,
                                          "name": "operatable",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4139,
                                          "src": "2846:10:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        ],
                                        "id": 4172,
                                        "name": "_burnFungible",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4510,
                                        "src": "2811:13:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                                          "typeString": "function (address,uint256,uint256,bool)"
                                        }
                                      },
                                      "id": 4179,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2811:46:20",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 4180,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2811:46:20"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4159,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4157,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4155,
                            "src": "2702:1:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 4158,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4121,
                            "src": "2707:6:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2702:11:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4262,
                        "initializationExpression": {
                          "assignments": [
                            4155
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 4155,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 4262,
                              "src": "2691:9:20",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 4154,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2691:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 4156,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2691:9:20"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 4161,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "2715:3:20",
                            "subExpression": {
                              "id": 4160,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4155,
                              "src": "2717:1:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4162,
                          "nodeType": "ExpressionStatement",
                          "src": "2715:3:20"
                        },
                        "nodeType": "ForStatement",
                        "src": "2686:1149:20"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4265,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4263,
                            "name": "nfCollectionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4146,
                            "src": "3849:14:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 4264,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3867:1:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3849:19:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4283,
                        "nodeType": "IfStatement",
                        "src": "3845:277:20",
                        "trueBody": {
                          "id": 4282,
                          "nodeType": "Block",
                          "src": "3870:252:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4267,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4110,
                                    "src": "3909:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4268,
                                    "name": "nfCollectionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4146,
                                    "src": "3915:14:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 4269,
                                    "name": "nfCollectionCount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4149,
                                    "src": "3931:17:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4266,
                                  "name": "_burnNFTUpdateCollection",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4619,
                                  "src": "3884:24:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256)"
                                  }
                                },
                                "id": 4270,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3884:65:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4271,
                              "nodeType": "ExpressionStatement",
                              "src": "3884:65:20"
                            },
                            {
                              "expression": {
                                "id": 4274,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 4272,
                                  "name": "nftsCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4152,
                                  "src": "3963:9:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 4273,
                                  "name": "nfCollectionCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4149,
                                  "src": "3976:17:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3963:30:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4275,
                              "nodeType": "ExpressionStatement",
                              "src": "3963:30:20"
                            },
                            {
                              "expression": {
                                "id": 4280,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 4276,
                                    "name": "_nftBalances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1750,
                                    "src": "4080:12:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 4278,
                                  "indexExpression": {
                                    "id": 4277,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4110,
                                    "src": "4093:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4080:18:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "id": 4279,
                                  "name": "nftsCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4152,
                                  "src": "4102:9:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4080:31:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4281,
                              "nodeType": "ExpressionStatement",
                              "src": "4080:31:20"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 4285,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4134,
                              "src": "4151:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4286,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4110,
                              "src": "4159:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 4289,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4173:1:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 4288,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4165:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 4287,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4165:7:20",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 4290,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4165:10:20",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 4291,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4113,
                              "src": "4177:3:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 4292,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4116,
                              "src": "4182:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 4284,
                            "name": "TransferBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1410,
                            "src": "4137:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 4293,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4137:52:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4294,
                        "nodeType": "EmitStatement",
                        "src": "4132:57:20"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4108,
                    "nodeType": "StructuredDocumentation",
                    "src": "2186:44:20",
                    "text": "@inheritdoc IERC1155721InventoryBurnable"
                  },
                  "functionSelector": "80534934",
                  "id": 4296,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchBurnFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4118,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2364:8:20"
                  },
                  "parameters": {
                    "id": 4117,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4110,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4296,
                        "src": "2267:12:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4109,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2267:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4113,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 4296,
                        "src": "2289:20:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4111,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2289:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4112,
                          "nodeType": "ArrayTypeName",
                          "src": "2289:9:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4116,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 4296,
                        "src": "2319:23:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4114,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2319:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4115,
                          "nodeType": "ArrayTypeName",
                          "src": "2319:9:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2257:91:20"
                  },
                  "returnParameters": {
                    "id": 4119,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2373:0:20"
                  },
                  "scope": 4620,
                  "src": "2235:1961:20",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    4802
                  ],
                  "body": {
                    "id": 4454,
                    "nodeType": "Block",
                    "src": "4337:1326:20",
                    "statements": [
                      {
                        "assignments": [
                          4307
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4307,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 4454,
                            "src": "4347:14:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 4306,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4347:7:20",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4310,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 4308,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 229,
                            "src": "4364:10:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 4309,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4364:12:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4347:29:20"
                      },
                      {
                        "assignments": [
                          4312
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4312,
                            "mutability": "mutable",
                            "name": "operatable",
                            "nodeType": "VariableDeclaration",
                            "scope": 4454,
                            "src": "4386:15:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 4311,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "4386:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4317,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 4314,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4299,
                              "src": "4418:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4315,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4307,
                              "src": "4424:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4313,
                            "name": "_isOperatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1232,
                            "src": "4404:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view returns (bool)"
                            }
                          },
                          "id": 4316,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4404:27:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4386:45:20"
                      },
                      {
                        "assignments": [
                          4319
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4319,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 4454,
                            "src": "4442:14:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4318,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4442:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4322,
                        "initialValue": {
                          "expression": {
                            "id": 4320,
                            "name": "nftIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4302,
                            "src": "4459:6:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 4321,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "4459:13:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4442:30:20"
                      },
                      {
                        "assignments": [
                          4327
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4327,
                            "mutability": "mutable",
                            "name": "values",
                            "nodeType": "VariableDeclaration",
                            "scope": 4454,
                            "src": "4482:23:20",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 4325,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4482:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4326,
                              "nodeType": "ArrayTypeName",
                              "src": "4482:9:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4333,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 4331,
                              "name": "length",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4319,
                              "src": "4522:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4330,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "4508:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 4328,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4512:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4329,
                              "nodeType": "ArrayTypeName",
                              "src": "4512:9:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 4332,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4508:21:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4482:47:20"
                      },
                      {
                        "assignments": [
                          4335
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4335,
                            "mutability": "mutable",
                            "name": "nfCollectionId",
                            "nodeType": "VariableDeclaration",
                            "scope": 4454,
                            "src": "4540:22:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4334,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4540:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4336,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4540:22:20"
                      },
                      {
                        "assignments": [
                          4338
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4338,
                            "mutability": "mutable",
                            "name": "nfCollectionCount",
                            "nodeType": "VariableDeclaration",
                            "scope": 4454,
                            "src": "4572:25:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4337,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4572:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4339,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4572:25:20"
                      },
                      {
                        "body": {
                          "id": 4424,
                          "nodeType": "Block",
                          "src": "4641:778:20",
                          "statements": [
                            {
                              "assignments": [
                                4350
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4350,
                                  "mutability": "mutable",
                                  "name": "nftId",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 4424,
                                  "src": "4655:13:20",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 4349,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4655:7:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4354,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 4351,
                                  "name": "nftIds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4302,
                                  "src": "4671:6:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 4353,
                                "indexExpression": {
                                  "id": 4352,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4341,
                                  "src": "4678:1:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4671:9:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4655:25:20"
                            },
                            {
                              "expression": {
                                "id": 4359,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 4355,
                                    "name": "values",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4327,
                                    "src": "4694:6:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 4357,
                                  "indexExpression": {
                                    "id": 4356,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4341,
                                    "src": "4701:1:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4694:9:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "31",
                                  "id": 4358,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4706:1:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "4694:13:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4360,
                              "nodeType": "ExpressionStatement",
                              "src": "4694:13:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4362,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4299,
                                    "src": "4730:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4363,
                                    "name": "nftId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4350,
                                    "src": "4736:5:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "baseExpression": {
                                      "id": 4364,
                                      "name": "values",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4327,
                                      "src": "4743:6:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 4366,
                                    "indexExpression": {
                                      "id": 4365,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4341,
                                      "src": "4750:1:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4743:9:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 4367,
                                    "name": "operatable",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4312,
                                    "src": "4754:10:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "74727565",
                                    "id": 4368,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4766:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "true"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 4361,
                                  "name": "_burnNFT",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4595,
                                  "src": "4721:8:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$_t_bool_$returns$__$",
                                    "typeString": "function (address,uint256,uint256,bool,bool)"
                                  }
                                },
                                "id": 4369,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4721:50:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4370,
                              "nodeType": "ExpressionStatement",
                              "src": "4721:50:20"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 4372,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4299,
                                    "src": "4799:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 4375,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4813:1:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 4374,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "4805:7:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 4373,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4805:7:20",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 4376,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4805:10:20",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 4377,
                                    "name": "nftId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4350,
                                    "src": "4817:5:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4371,
                                  "name": "Transfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4645,
                                  "src": "4790:8:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 4378,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4790:33:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4379,
                              "nodeType": "EmitStatement",
                              "src": "4785:38:20"
                            },
                            {
                              "assignments": [
                                4381
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4381,
                                  "mutability": "mutable",
                                  "name": "nextCollectionId",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 4424,
                                  "src": "4837:24:20",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 4380,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4837:7:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4386,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 4384,
                                    "name": "_collectionMaskLength",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 771,
                                    "src": "4895:21:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 4382,
                                    "name": "nftId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4350,
                                    "src": "4864:5:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4383,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getNonFungibleCollection",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1362,
                                  "src": "4864:30:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 4385,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4864:53:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4837:80:20"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4389,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4387,
                                  "name": "nfCollectionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4335,
                                  "src": "4935:14:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 4388,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4953:1:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "4935:19:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 4422,
                                "nodeType": "Block",
                                "src": "5067:342:20",
                                "statements": [
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 4401,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 4399,
                                        "name": "nextCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4381,
                                        "src": "5089:16:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "!=",
                                      "rightExpression": {
                                        "id": 4400,
                                        "name": "nfCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4335,
                                        "src": "5109:14:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "5089:34:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "id": 4420,
                                      "nodeType": "Block",
                                      "src": "5335:60:20",
                                      "statements": [
                                        {
                                          "expression": {
                                            "id": 4418,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "UnaryOperation",
                                            "operator": "++",
                                            "prefix": true,
                                            "src": "5357:19:20",
                                            "subExpression": {
                                              "id": 4417,
                                              "name": "nfCollectionCount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4338,
                                              "src": "5359:17:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 4419,
                                          "nodeType": "ExpressionStatement",
                                          "src": "5357:19:20"
                                        }
                                      ]
                                    },
                                    "id": 4421,
                                    "nodeType": "IfStatement",
                                    "src": "5085:310:20",
                                    "trueBody": {
                                      "id": 4416,
                                      "nodeType": "Block",
                                      "src": "5125:204:20",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "id": 4403,
                                                "name": "from",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4299,
                                                "src": "5172:4:20",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "id": 4404,
                                                "name": "nfCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4335,
                                                "src": "5178:14:20",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              {
                                                "id": 4405,
                                                "name": "nfCollectionCount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4338,
                                                "src": "5194:17:20",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "id": 4402,
                                              "name": "_burnNFTUpdateCollection",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4619,
                                              "src": "5147:24:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,uint256,uint256)"
                                              }
                                            },
                                            "id": 4406,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "5147:65:20",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 4407,
                                          "nodeType": "ExpressionStatement",
                                          "src": "5147:65:20"
                                        },
                                        {
                                          "expression": {
                                            "id": 4410,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 4408,
                                              "name": "nfCollectionId",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4335,
                                              "src": "5234:14:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "id": 4409,
                                              "name": "nextCollectionId",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4381,
                                              "src": "5251:16:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "5234:33:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 4411,
                                          "nodeType": "ExpressionStatement",
                                          "src": "5234:33:20"
                                        },
                                        {
                                          "expression": {
                                            "id": 4414,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 4412,
                                              "name": "nfCollectionCount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4338,
                                              "src": "5289:17:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "hexValue": "31",
                                              "id": 4413,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "5309:1:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_1_by_1",
                                                "typeString": "int_const 1"
                                              },
                                              "value": "1"
                                            },
                                            "src": "5289:21:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 4415,
                                          "nodeType": "ExpressionStatement",
                                          "src": "5289:21:20"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              "id": 4423,
                              "nodeType": "IfStatement",
                              "src": "4931:478:20",
                              "trueBody": {
                                "id": 4398,
                                "nodeType": "Block",
                                "src": "4956:105:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 4392,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 4390,
                                        "name": "nfCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4335,
                                        "src": "4974:14:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "id": 4391,
                                        "name": "nextCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4381,
                                        "src": "4991:16:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "4974:33:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 4393,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4974:33:20"
                                  },
                                  {
                                    "expression": {
                                      "id": 4396,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 4394,
                                        "name": "nfCollectionCount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4338,
                                        "src": "5025:17:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "hexValue": "31",
                                        "id": 4395,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5045:1:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "5025:21:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 4397,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5025:21:20"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4345,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4343,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4341,
                            "src": "4623:1:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 4344,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4319,
                            "src": "4628:6:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4623:11:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4425,
                        "initializationExpression": {
                          "assignments": [
                            4341
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 4341,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 4425,
                              "src": "4612:9:20",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 4340,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4612:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 4342,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "4612:9:20"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 4347,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "4636:3:20",
                            "subExpression": {
                              "id": 4346,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4341,
                              "src": "4638:1:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4348,
                          "nodeType": "ExpressionStatement",
                          "src": "4636:3:20"
                        },
                        "nodeType": "ForStatement",
                        "src": "4607:812:20"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4428,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4426,
                            "name": "nfCollectionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4335,
                            "src": "5433:14:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 4427,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5451:1:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "5433:19:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4442,
                        "nodeType": "IfStatement",
                        "src": "5429:157:20",
                        "trueBody": {
                          "id": 4441,
                          "nodeType": "Block",
                          "src": "5454:132:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4430,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4299,
                                    "src": "5493:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4431,
                                    "name": "nfCollectionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4335,
                                    "src": "5499:14:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 4432,
                                    "name": "nfCollectionCount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4338,
                                    "src": "5515:17:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4429,
                                  "name": "_burnNFTUpdateCollection",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4619,
                                  "src": "5468:24:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256)"
                                  }
                                },
                                "id": 4433,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5468:65:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4434,
                              "nodeType": "ExpressionStatement",
                              "src": "5468:65:20"
                            },
                            {
                              "expression": {
                                "id": 4439,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 4435,
                                    "name": "_nftBalances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1750,
                                    "src": "5547:12:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 4437,
                                  "indexExpression": {
                                    "id": 4436,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4299,
                                    "src": "5560:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5547:18:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "id": 4438,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4319,
                                  "src": "5569:6:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5547:28:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4440,
                              "nodeType": "ExpressionStatement",
                              "src": "5547:28:20"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 4444,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4307,
                              "src": "5615:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4445,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4299,
                              "src": "5623:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 4448,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5637:1:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 4447,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5629:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 4446,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5629:7:20",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 4449,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5629:10:20",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 4450,
                              "name": "nftIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4302,
                              "src": "5641:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 4451,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4327,
                              "src": "5649:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 4443,
                            "name": "TransferBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1410,
                            "src": "5601:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 4452,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5601:55:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4453,
                        "nodeType": "EmitStatement",
                        "src": "5596:60:20"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4297,
                    "nodeType": "StructuredDocumentation",
                    "src": "4202:44:20",
                    "text": "@inheritdoc IERC1155721InventoryBurnable"
                  },
                  "functionSelector": "f2472965",
                  "id": 4455,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchBurnFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4304,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4328:8:20"
                  },
                  "parameters": {
                    "id": 4303,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4299,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4455,
                        "src": "4274:12:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4298,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4274:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4302,
                        "mutability": "mutable",
                        "name": "nftIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 4455,
                        "src": "4288:23:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4300,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4288:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4301,
                          "nodeType": "ArrayTypeName",
                          "src": "4288:9:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4273:39:20"
                  },
                  "returnParameters": {
                    "id": 4305,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4337:0:20"
                  },
                  "scope": 4620,
                  "src": "4251:1412:20",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4509,
                    "nodeType": "Block",
                    "src": "5926:346:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4469,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4467,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4461,
                                "src": "5944:5:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 4468,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5953:1:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "5944:10:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207a65726f2076616c7565",
                              "id": 4470,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5956:23:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_aaf8384685e144721b7b9369f09b3396100431a7a018020a214de32c84a5f76c",
                                "typeString": "literal_string \"Inventory: zero value\""
                              },
                              "value": "Inventory: zero value"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_aaf8384685e144721b7b9369f09b3396100431a7a018020a214de32c84a5f76c",
                                "typeString": "literal_string \"Inventory: zero value\""
                              }
                            ],
                            "id": 4466,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5936:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4471,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5936:44:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4472,
                        "nodeType": "ExpressionStatement",
                        "src": "5936:44:20"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4474,
                              "name": "operatable",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4463,
                              "src": "5998:10:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f6e2d617070726f7665642073656e646572",
                              "id": 4475,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6010:32:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6b20705240a74b98ad3770de0b6354de37c9aed640ae675f48200e7f883462f0",
                                "typeString": "literal_string \"Inventory: non-approved sender\""
                              },
                              "value": "Inventory: non-approved sender"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6b20705240a74b98ad3770de0b6354de37c9aed640ae675f48200e7f883462f0",
                                "typeString": "literal_string \"Inventory: non-approved sender\""
                              }
                            ],
                            "id": 4473,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5990:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4476,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5990:53:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4477,
                        "nodeType": "ExpressionStatement",
                        "src": "5990:53:20"
                      },
                      {
                        "assignments": [
                          4479
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4479,
                            "mutability": "mutable",
                            "name": "balance",
                            "nodeType": "VariableDeclaration",
                            "scope": 4509,
                            "src": "6053:15:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4478,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6053:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4485,
                        "initialValue": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 4480,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 792,
                              "src": "6071:9:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(uint256 => mapping(address => uint256))"
                              }
                            },
                            "id": 4482,
                            "indexExpression": {
                              "id": 4481,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4459,
                              "src": "6081:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6071:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 4484,
                          "indexExpression": {
                            "id": 4483,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4457,
                            "src": "6085:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6071:19:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6053:37:20"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4489,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4487,
                                "name": "balance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4479,
                                "src": "6108:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 4488,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4461,
                                "src": "6119:5:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6108:16:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f7420656e6f7567682062616c616e6365",
                              "id": 4490,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6126:31:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_82c893371492309285d50bc6a7cf0711f02e83a8e143785e5e0b985266953be1",
                                "typeString": "literal_string \"Inventory: not enough balance\""
                              },
                              "value": "Inventory: not enough balance"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_82c893371492309285d50bc6a7cf0711f02e83a8e143785e5e0b985266953be1",
                                "typeString": "literal_string \"Inventory: not enough balance\""
                              }
                            ],
                            "id": 4486,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6100:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4491,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6100:58:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4492,
                        "nodeType": "ExpressionStatement",
                        "src": "6100:58:20"
                      },
                      {
                        "expression": {
                          "id": 4501,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 4493,
                                "name": "_balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 792,
                                "src": "6168:9:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(address => uint256))"
                                }
                              },
                              "id": 4496,
                              "indexExpression": {
                                "id": 4494,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4459,
                                "src": "6178:2:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6168:13:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 4497,
                            "indexExpression": {
                              "id": 4495,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4457,
                              "src": "6182:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6168:19:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4500,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 4498,
                              "name": "balance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4479,
                              "src": "6190:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "id": 4499,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4461,
                              "src": "6200:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "6190:15:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6168:37:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4502,
                        "nodeType": "ExpressionStatement",
                        "src": "6168:37:20"
                      },
                      {
                        "expression": {
                          "id": 4507,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 4503,
                              "name": "_supplies",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 796,
                              "src": "6243:9:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 4505,
                            "indexExpression": {
                              "id": 4504,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4459,
                              "src": "6253:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6243:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "id": 4506,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4461,
                            "src": "6260:5:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6243:22:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4508,
                        "nodeType": "ExpressionStatement",
                        "src": "6243:22:20"
                      }
                    ]
                  },
                  "id": 4510,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burnFungible",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4464,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4457,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4510,
                        "src": "5830:12:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4456,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5830:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4459,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 4510,
                        "src": "5852:10:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4458,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5852:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4461,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 4510,
                        "src": "5872:13:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4460,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5872:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4463,
                        "mutability": "mutable",
                        "name": "operatable",
                        "nodeType": "VariableDeclaration",
                        "scope": 4510,
                        "src": "5895:15:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4462,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5895:4:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5820:96:20"
                  },
                  "returnParameters": {
                    "id": 4465,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5926:0:20"
                  },
                  "scope": 4620,
                  "src": "5798:474:20",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4594,
                    "nodeType": "Block",
                    "src": "6431:639:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4526,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4524,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4516,
                                "src": "6449:5:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 4525,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6458:1:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "6449:10:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a2077726f6e67204e46542076616c7565",
                              "id": 4527,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6461:28:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e505803ce130ba2b210f4e0351e5d5c25d0a89714741c25638627f555e8b4cd5",
                                "typeString": "literal_string \"Inventory: wrong NFT value\""
                              },
                              "value": "Inventory: wrong NFT value"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e505803ce130ba2b210f4e0351e5d5c25d0a89714741c25638627f555e8b4cd5",
                                "typeString": "literal_string \"Inventory: wrong NFT value\""
                              }
                            ],
                            "id": 4523,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6441:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4528,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6441:49:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4529,
                        "nodeType": "ExpressionStatement",
                        "src": "6441:49:20"
                      },
                      {
                        "assignments": [
                          4531
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4531,
                            "mutability": "mutable",
                            "name": "owner",
                            "nodeType": "VariableDeclaration",
                            "scope": 4594,
                            "src": "6500:13:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4530,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6500:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4535,
                        "initialValue": {
                          "baseExpression": {
                            "id": 4532,
                            "name": "_owners",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 800,
                            "src": "6516:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 4534,
                          "indexExpression": {
                            "id": 4533,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4514,
                            "src": "6524:2:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6516:11:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6500:27:20"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 4545,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4537,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4512,
                                "src": "6545:4:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 4542,
                                        "name": "owner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4531,
                                        "src": "6569:5:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 4541,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "6561:7:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint160_$",
                                        "typeString": "type(uint160)"
                                      },
                                      "typeName": {
                                        "id": 4540,
                                        "name": "uint160",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6561:7:20",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 4543,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6561:14:20",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  ],
                                  "id": 4539,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6553:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 4538,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6553:7:20",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 4544,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6553:23:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "6545:31:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f6e2d6f776e6564204e4654",
                              "id": 4546,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6578:26:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_cb299a32a7af2eac6d18f568f522d952ea6c98cc6d0ce67299c271d8f74679c8",
                                "typeString": "literal_string \"Inventory: non-owned NFT\""
                              },
                              "value": "Inventory: non-owned NFT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_cb299a32a7af2eac6d18f568f522d952ea6c98cc6d0ce67299c271d8f74679c8",
                                "typeString": "literal_string \"Inventory: non-owned NFT\""
                              }
                            ],
                            "id": 4536,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6537:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4547,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6537:68:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4548,
                        "nodeType": "ExpressionStatement",
                        "src": "6537:68:20"
                      },
                      {
                        "condition": {
                          "id": 4550,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "6619:11:20",
                          "subExpression": {
                            "id": 4549,
                            "name": "operatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4518,
                            "src": "6620:10:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4569,
                        "nodeType": "IfStatement",
                        "src": "6615:163:20",
                        "trueBody": {
                          "id": 4568,
                          "nodeType": "Block",
                          "src": "6632:146:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 4564,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 4556,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 4554,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 4552,
                                              "name": "owner",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4531,
                                              "src": "6655:5:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "&",
                                            "rightExpression": {
                                              "id": 4553,
                                              "name": "_APPROVAL_BIT_TOKEN_OWNER_",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1742,
                                              "src": "6663:26:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "6655:34:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "!=",
                                          "rightExpression": {
                                            "hexValue": "30",
                                            "id": 4555,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "6693:1:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "6655:39:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 4557,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "6654:41:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "id": 4563,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "id": 4558,
                                          "name": "_msgSender",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 229,
                                          "src": "6699:10:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                            "typeString": "function () view returns (address payable)"
                                          }
                                        },
                                        "id": 4559,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6699:12:20",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "baseExpression": {
                                          "id": 4560,
                                          "name": "_nftApprovals",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1754,
                                          "src": "6715:13:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                            "typeString": "mapping(uint256 => address)"
                                          }
                                        },
                                        "id": 4562,
                                        "indexExpression": {
                                          "id": 4561,
                                          "name": "id",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4514,
                                          "src": "6729:2:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "6715:17:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "6699:33:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "6654:78:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "496e76656e746f72793a206e6f6e2d617070726f7665642073656e646572",
                                    "id": 4565,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6734:32:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_6b20705240a74b98ad3770de0b6354de37c9aed640ae675f48200e7f883462f0",
                                      "typeString": "literal_string \"Inventory: non-approved sender\""
                                    },
                                    "value": "Inventory: non-approved sender"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_6b20705240a74b98ad3770de0b6354de37c9aed640ae675f48200e7f883462f0",
                                      "typeString": "literal_string \"Inventory: non-approved sender\""
                                    }
                                  ],
                                  "id": 4551,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "6646:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 4566,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6646:121:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4567,
                              "nodeType": "ExpressionStatement",
                              "src": "6646:121:20"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 4574,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 4570,
                              "name": "_owners",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 800,
                              "src": "6787:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 4572,
                            "indexExpression": {
                              "id": 4571,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4514,
                              "src": "6795:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6787:11:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 4573,
                            "name": "_BURNT_NFT_OWNER",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 780,
                            "src": "6801:16:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6787:30:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4575,
                        "nodeType": "ExpressionStatement",
                        "src": "6787:30:20"
                      },
                      {
                        "condition": {
                          "id": 4577,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "6832:8:20",
                          "subExpression": {
                            "id": 4576,
                            "name": "isBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4520,
                            "src": "6833:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4593,
                        "nodeType": "IfStatement",
                        "src": "6828:236:20",
                        "trueBody": {
                          "id": 4592,
                          "nodeType": "Block",
                          "src": "6842:222:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4579,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4512,
                                    "src": "6881:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 4582,
                                        "name": "_collectionMaskLength",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 771,
                                        "src": "6915:21:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "id": 4580,
                                        "name": "id",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4514,
                                        "src": "6887:2:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 4581,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "getNonFungibleCollection",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1362,
                                      "src": "6887:27:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 4583,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6887:50:20",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "hexValue": "31",
                                    "id": 4584,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6939:1:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    }
                                  ],
                                  "id": 4578,
                                  "name": "_burnNFTUpdateCollection",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4619,
                                  "src": "6856:24:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256)"
                                  }
                                },
                                "id": 4585,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6856:85:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4586,
                              "nodeType": "ExpressionStatement",
                              "src": "6856:85:20"
                            },
                            {
                              "expression": {
                                "id": 4590,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "--",
                                "prefix": true,
                                "src": "7033:20:20",
                                "subExpression": {
                                  "baseExpression": {
                                    "id": 4587,
                                    "name": "_nftBalances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1750,
                                    "src": "7035:12:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 4589,
                                  "indexExpression": {
                                    "id": 4588,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4512,
                                    "src": "7048:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "7035:18:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4591,
                              "nodeType": "ExpressionStatement",
                              "src": "7033:20:20"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 4595,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burnNFT",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4521,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4512,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4595,
                        "src": "6305:12:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4511,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6305:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4514,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 4595,
                        "src": "6327:10:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4513,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6327:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4516,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 4595,
                        "src": "6347:13:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4515,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6347:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4518,
                        "mutability": "mutable",
                        "name": "operatable",
                        "nodeType": "VariableDeclaration",
                        "scope": 4595,
                        "src": "6370:15:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4517,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6370:4:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4520,
                        "mutability": "mutable",
                        "name": "isBatch",
                        "nodeType": "VariableDeclaration",
                        "scope": 4595,
                        "src": "6395:12:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4519,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6395:4:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6295:118:20"
                  },
                  "returnParameters": {
                    "id": 4522,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6431:0:20"
                  },
                  "scope": 4620,
                  "src": "6278:792:20",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4618,
                    "nodeType": "Block",
                    "src": "7209:172:20",
                    "statements": [
                      {
                        "expression": {
                          "id": 4610,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 4604,
                                "name": "_balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 792,
                                "src": "7292:9:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(address => uint256))"
                                }
                              },
                              "id": 4607,
                              "indexExpression": {
                                "id": 4605,
                                "name": "collectionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4599,
                                "src": "7302:12:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7292:23:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 4608,
                            "indexExpression": {
                              "id": 4606,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4597,
                              "src": "7316:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7292:29:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "id": 4609,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4601,
                            "src": "7325:6:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7292:39:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4611,
                        "nodeType": "ExpressionStatement",
                        "src": "7292:39:20"
                      },
                      {
                        "expression": {
                          "id": 4616,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 4612,
                              "name": "_supplies",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 796,
                              "src": "7341:9:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 4614,
                            "indexExpression": {
                              "id": 4613,
                              "name": "collectionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4599,
                              "src": "7351:12:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7341:23:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "id": 4615,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4601,
                            "src": "7368:6:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7341:33:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4617,
                        "nodeType": "ExpressionStatement",
                        "src": "7341:33:20"
                      }
                    ]
                  },
                  "id": 4619,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burnNFTUpdateCollection",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4602,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4597,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4619,
                        "src": "7119:12:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4596,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7119:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4599,
                        "mutability": "mutable",
                        "name": "collectionId",
                        "nodeType": "VariableDeclaration",
                        "scope": 4619,
                        "src": "7141:20:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4598,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7141:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4601,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 4619,
                        "src": "7171:14:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4600,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7171:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7109:82:20"
                  },
                  "returnParameters": {
                    "id": 4603,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7209:0:20"
                  },
                  "scope": 4620,
                  "src": "7076:305:20",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 4621,
              "src": "657:6726:20"
            }
          ],
          "src": "33:7351:20"
        },
        "id": 20
      },
      "contracts/token/ERC1155721/interfaces/IERC1155721Inventory.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155721/interfaces/IERC1155721Inventory.sol",
          "exportedSymbols": {
            "IERC1155": [
              1496
            ],
            "IERC1155721Inventory": [
              4768
            ],
            "IERC1155Inventory": [
              1599
            ],
            "IERC721": [
              5285
            ],
            "IERC721BatchTransfer": [
              5300
            ]
          },
          "id": 4769,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4622,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:21"
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155.sol",
              "file": "./../../ERC1155/interfaces/IERC1155.sol",
              "id": 4624,
              "nodeType": "ImportDirective",
              "scope": 4769,
              "sourceUnit": 1497,
              "src": "66:65:21",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4623,
                    "name": "IERC1155",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:8:21",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155Inventory.sol",
              "file": "./../../ERC1155/interfaces/IERC1155Inventory.sol",
              "id": 4626,
              "nodeType": "ImportDirective",
              "scope": 4769,
              "sourceUnit": 1600,
              "src": "132:83:21",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4625,
                    "name": "IERC1155Inventory",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "140:17:21",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/interfaces/IERC721.sol",
              "file": "./../../ERC721/interfaces/IERC721.sol",
              "id": 4628,
              "nodeType": "ImportDirective",
              "scope": 4769,
              "sourceUnit": 5286,
              "src": "216:62:21",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4627,
                    "name": "IERC721",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "224:7:21",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/interfaces/IERC721BatchTransfer.sol",
              "file": "./../../ERC721/interfaces/IERC721BatchTransfer.sol",
              "id": 4630,
              "nodeType": "ImportDirective",
              "scope": 4769,
              "sourceUnit": 5301,
              "src": "279:88:21",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4629,
                    "name": "IERC721BatchTransfer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "287:20:21",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 4632,
                    "name": "IERC1155Inventory",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1599,
                    "src": "487:17:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155Inventory_$1599",
                      "typeString": "contract IERC1155Inventory"
                    }
                  },
                  "id": 4633,
                  "nodeType": "InheritanceSpecifier",
                  "src": "487:17:21"
                },
                {
                  "baseName": {
                    "id": 4634,
                    "name": "IERC721",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5285,
                    "src": "506:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC721_$5285",
                      "typeString": "contract IERC721"
                    }
                  },
                  "id": 4635,
                  "nodeType": "InheritanceSpecifier",
                  "src": "506:7:21"
                },
                {
                  "baseName": {
                    "id": 4636,
                    "name": "IERC721BatchTransfer",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5300,
                    "src": "515:20:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC721BatchTransfer_$5300",
                      "typeString": "contract IERC721BatchTransfer"
                    }
                  },
                  "id": 4637,
                  "nodeType": "InheritanceSpecifier",
                  "src": "515:20:21"
                }
              ],
              "contractDependencies": [
                1496,
                1599,
                1636,
                5285,
                5300
              ],
              "contractKind": "interface",
              "documentation": {
                "id": 4631,
                "nodeType": "StructuredDocumentation",
                "src": "369:83:21",
                "text": " @title ERC1155 Inventory with support for ERC721 and EC721BatchTransfer."
              },
              "fullyImplemented": false,
              "id": 4768,
              "linearizedBaseContracts": [
                4768,
                5300,
                5285,
                1599,
                1636,
                1496
              ],
              "name": "IERC1155721Inventory",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "id": 4645,
                  "name": "Transfer",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4644,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4639,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4645,
                        "src": "686:21:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4638,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "686:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4641,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4645,
                        "src": "709:19:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4640,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "709:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4643,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 4645,
                        "src": "730:24:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4642,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "730:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "685:70:21"
                  },
                  "src": "671:85:21"
                },
                {
                  "anonymous": false,
                  "id": 4653,
                  "name": "Approval",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4652,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4647,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 4653,
                        "src": "777:22:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4646,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "777:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4649,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_approved",
                        "nodeType": "VariableDeclaration",
                        "scope": 4653,
                        "src": "801:25:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4648,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "801:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4651,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 4653,
                        "src": "828:24:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4650,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "828:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "776:77:21"
                  },
                  "src": "762:92:21"
                },
                {
                  "baseFunctions": [
                    5262
                  ],
                  "documentation": {
                    "id": 4654,
                    "nodeType": "StructuredDocumentation",
                    "src": "860:702:21",
                    "text": " Unsafely transfers a Non-Fungible Token.\n @dev Usage of this method is discouraged, use `safeTransferFrom` whenever possible\n @dev Reverts if `to` is the zero address.\n @dev Reverts if the sender is not approved.\n @dev Reverts if `nftId` is not owned by `from`.\n @dev Reverts if `to` is an IERC1155TokenReceiver contract which refuses the receiver call.\n @dev Resets the ERC721 single token approval.\n @dev Emits an {IERC721-Transfer} event.\n @dev Emits an {IERC1155-TransferSingle} event.\n @param from Current token owner.\n @param to Address of the new token owner.\n @param nftId Identifier of the token to transfer."
                  },
                  "functionSelector": "23b872dd",
                  "id": 4664,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4662,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1669:8:21"
                  },
                  "parameters": {
                    "id": 4661,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4656,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4664,
                        "src": "1598:12:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4655,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1598:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4658,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4664,
                        "src": "1620:10:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4657,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1620:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4660,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 4664,
                        "src": "1640:13:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4659,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1640:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1588:71:21"
                  },
                  "returnParameters": {
                    "id": 4663,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1677:0:21"
                  },
                  "scope": 4768,
                  "src": "1567:111:21",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    5272
                  ],
                  "documentation": {
                    "id": 4665,
                    "nodeType": "StructuredDocumentation",
                    "src": "1684:733:21",
                    "text": " Safely transfers a Non-Fungible Token.\n @dev Reverts if `to` is the zero address.\n @dev Reverts if the sender is not approved.\n @dev Reverts if `nftId` is not owned by `from`.\n @dev Reverts if `to` is a contract which does not implement IERC1155TokenReceiver or IERC721Receiver.\n @dev Reverts if `to` is an IERC1155TokenReceiver or IERC721Receiver contract which refuses the transfer.\n @dev Resets the ERC721 single token approval.\n @dev Emits an {IERC721-Transfer} event.\n @dev Emits an {IERC1155-TransferSingle} event.\n @param from Current token owner.\n @param to Address of the new token owner.\n @param nftId Identifier of the token to transfer."
                  },
                  "functionSelector": "42842e0e",
                  "id": 4675,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4673,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2528:8:21"
                  },
                  "parameters": {
                    "id": 4672,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4667,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4675,
                        "src": "2457:12:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4666,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2457:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4669,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4675,
                        "src": "2479:10:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4668,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2479:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4671,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 4675,
                        "src": "2499:13:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4670,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2499:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2447:71:21"
                  },
                  "returnParameters": {
                    "id": 4674,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2536:0:21"
                  },
                  "scope": 4768,
                  "src": "2422:115:21",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    5284
                  ],
                  "documentation": {
                    "id": 4676,
                    "nodeType": "StructuredDocumentation",
                    "src": "2543:800:21",
                    "text": " Safely transfers a Non-Fungible Token.\n @dev Reverts if `to` is the zero address.\n @dev Reverts if the sender is not approved.\n @dev Reverts if `nftId` is not owned by `from`.\n @dev Reverts if `to` is a contract which does not implement IERC1155TokenReceiver or IERC721Receiver.\n @dev Reverts if `to` is an IERC1155TokenReceiver or IERC721Receiver contract which refuses the transfer.\n @dev Resets the ERC721 single token approval.\n @dev Emits an {IERC721-Transfer} event.\n @dev Emits an {IERC1155-TransferSingle} event.\n @param from Current token owner.\n @param to Address of the new token owner.\n @param nftId Identifier of the token to transfer.\n @param data Optional data to pass to the receiver contract."
                  },
                  "functionSelector": "b88d4fde",
                  "id": 4688,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4686,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3483:8:21"
                  },
                  "parameters": {
                    "id": 4685,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4678,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4688,
                        "src": "3383:12:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4677,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3383:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4680,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4688,
                        "src": "3405:10:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4679,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3405:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4682,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 4688,
                        "src": "3425:13:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4681,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3425:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4684,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 4688,
                        "src": "3448:19:21",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4683,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3448:5:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3373:100:21"
                  },
                  "returnParameters": {
                    "id": 4687,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3491:0:21"
                  },
                  "scope": 4768,
                  "src": "3348:144:21",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    5299
                  ],
                  "documentation": {
                    "id": 4689,
                    "nodeType": "StructuredDocumentation",
                    "src": "3627:648:21",
                    "text": " Unsafely transfers a batch of Non-Fungible Tokens.\n @dev Reverts if `to` is the zero address.\n @dev Reverts if the sender is not approved.\n @dev Reverts if one of `nftIds` is not owned by `from`.\n @dev Reverts if `to` is an IERC1155TokenReceiver which refuses the transfer.\n @dev Resets the token approval for each of `nftIds`.\n @dev Emits an {IERC721-Transfer} event for each of `nftIds`.\n @dev Emits an {IERC1155-TransferBatch} event.\n @param from Current tokens owner.\n @param to Address of the new tokens owner.\n @param nftIds Identifiers of the tokens to transfer."
                  },
                  "functionSelector": "f3993d11",
                  "id": 4700,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4698,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4399:8:21"
                  },
                  "parameters": {
                    "id": 4697,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4691,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4700,
                        "src": "4316:12:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4690,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4316:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4693,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4700,
                        "src": "4338:10:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4692,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4338:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4696,
                        "mutability": "mutable",
                        "name": "nftIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 4700,
                        "src": "4358:25:21",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4694,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4358:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4695,
                          "nodeType": "ArrayTypeName",
                          "src": "4358:9:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4306:83:21"
                  },
                  "returnParameters": {
                    "id": 4699,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4407:0:21"
                  },
                  "scope": 4768,
                  "src": "4280:128:21",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1581
                  ],
                  "documentation": {
                    "id": 4701,
                    "nodeType": "StructuredDocumentation",
                    "src": "4543:1157:21",
                    "text": " Safely transfers some token.\n @dev Reverts if `to` is the zero address.\n @dev Reverts if the sender is not approved.\n @dev Reverts if `id` does not represent a token.\n @dev Reverts if `id` represents a Non-Fungible Token and `value` is not 1.\n @dev Reverts if `id` represents a Non-Fungible Token and is not owned by `from`.\n @dev Reverts if `id` represents a Fungible Token and `value` is 0.\n @dev Reverts if `id` represents a Fungible Token and `from` has an insufficient balance.\n @dev Reverts if `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155received} fails or is refused.\n @dev Resets the ERC721 single token approval if `id` represents a Non-Fungible Token.\n @dev Emits an {IERC721-Transfer} event if `id` represents a Non-Fungible Token.\n @dev Emits an {IERC1155-TransferSingle} event.\n @param from Current token owner.\n @param to Address of the new token owner.\n @param id Identifier of the token to transfer.\n @param value Amount of token to transfer.\n @param data Optional data to pass to the receiver contract."
                  },
                  "functionSelector": "f242432a",
                  "id": 4715,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4713,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5860:8:21"
                  },
                  "parameters": {
                    "id": 4712,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4703,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4715,
                        "src": "5740:12:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4702,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5740:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4705,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4715,
                        "src": "5762:10:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4704,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5762:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4707,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 4715,
                        "src": "5782:10:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4706,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5782:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4709,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 4715,
                        "src": "5802:13:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4708,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5802:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4711,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 4715,
                        "src": "5825:19:21",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4710,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5825:5:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5730:120:21"
                  },
                  "returnParameters": {
                    "id": 4714,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5868:0:21"
                  },
                  "scope": 4768,
                  "src": "5705:164:21",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1598
                  ],
                  "documentation": {
                    "id": 4716,
                    "nodeType": "StructuredDocumentation",
                    "src": "5875:1223:21",
                    "text": " Safely transfers a batch of tokens.\n @dev Reverts if `to` is the zero address.\n @dev Reverts if the sender is not approved.\n @dev Reverts if one of `ids` does not represent a token.\n @dev Reverts if one of `ids` represents a Non-Fungible Token and `value` is not 1.\n @dev Reverts if one of `ids` represents a Non-Fungible Token and is not owned by `from`.\n @dev Reverts if one of `ids` represents a Fungible Token and `value` is 0.\n @dev Reverts if one of `ids` represents a Fungible Token and `from` has an insufficient balance.\n @dev Reverts if one of `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155batchReceived} fails or is refused.\n @dev Resets the ERC721 single token approval for each transferred Non-Fungible Token.\n @dev Emits an {IERC721-Transfer} event for each transferred Non-Fungible Token.\n @dev Emits an {IERC1155-TransferBatch} event.\n @param from Current tokens owner.\n @param to Address of the new tokens owner.\n @param ids Identifiers of the tokens to transfer.\n @param values Amounts of tokens to transfer.\n @param data Optional data to pass to the receiver contract."
                  },
                  "functionSelector": "2eb2c2d6",
                  "id": 4732,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeBatchTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4730,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "7287:8:21"
                  },
                  "parameters": {
                    "id": 4729,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4718,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4732,
                        "src": "7143:12:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4717,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7143:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4720,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4732,
                        "src": "7165:10:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4719,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7165:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4723,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 4732,
                        "src": "7185:22:21",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4721,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7185:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4722,
                          "nodeType": "ArrayTypeName",
                          "src": "7185:9:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4726,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 4732,
                        "src": "7217:25:21",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4724,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7217:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4725,
                          "nodeType": "ArrayTypeName",
                          "src": "7217:9:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4728,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 4732,
                        "src": "7252:19:21",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4727,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7252:5:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7133:144:21"
                  },
                  "returnParameters": {
                    "id": 4731,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7295:0:21"
                  },
                  "scope": 4768,
                  "src": "7103:193:21",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1485,
                    5242
                  ],
                  "documentation": {
                    "id": 4733,
                    "nodeType": "StructuredDocumentation",
                    "src": "7431:24:21",
                    "text": "@inheritdoc IERC1155"
                  },
                  "functionSelector": "a22cb465",
                  "id": 4743,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setApprovalForAll",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4741,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 4739,
                        "name": "IERC1155",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1496,
                        "src": "7538:8:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155_$1496",
                          "typeString": "contract IERC1155"
                        }
                      },
                      {
                        "id": 4740,
                        "name": "IERC721",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5285,
                        "src": "7548:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC721_$5285",
                          "typeString": "contract IERC721"
                        }
                      }
                    ],
                    "src": "7529:27:21"
                  },
                  "parameters": {
                    "id": 4738,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4735,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 4743,
                        "src": "7487:16:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4734,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7487:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4737,
                        "mutability": "mutable",
                        "name": "approved",
                        "nodeType": "VariableDeclaration",
                        "scope": 4743,
                        "src": "7505:13:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4736,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7505:4:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7486:33:21"
                  },
                  "returnParameters": {
                    "id": 4742,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7556:0:21"
                  },
                  "scope": 4768,
                  "src": "7460:97:21",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1495,
                    5252
                  ],
                  "documentation": {
                    "id": 4744,
                    "nodeType": "StructuredDocumentation",
                    "src": "7563:24:21",
                    "text": "@inheritdoc IERC1155"
                  },
                  "functionSelector": "e985e9c5",
                  "id": 4756,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isApprovedForAll",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4752,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 4750,
                        "name": "IERC1155",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1496,
                        "src": "7674:8:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155_$1496",
                          "typeString": "contract IERC1155"
                        }
                      },
                      {
                        "id": 4751,
                        "name": "IERC721",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5285,
                        "src": "7684:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC721_$5285",
                          "typeString": "contract IERC721"
                        }
                      }
                    ],
                    "src": "7665:27:21"
                  },
                  "parameters": {
                    "id": 4749,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4746,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 4756,
                        "src": "7618:13:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4745,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7618:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4748,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 4756,
                        "src": "7633:16:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4747,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7633:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7617:33:21"
                  },
                  "returnParameters": {
                    "id": 4755,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4754,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4756,
                        "src": "7702:4:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4753,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7702:4:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7701:6:21"
                  },
                  "scope": 4768,
                  "src": "7592:116:21",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1523,
                    5218
                  ],
                  "documentation": {
                    "id": 4757,
                    "nodeType": "StructuredDocumentation",
                    "src": "7843:33:21",
                    "text": "@inheritdoc IERC1155Inventory"
                  },
                  "functionSelector": "6352211e",
                  "id": 4767,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ownerOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4763,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 4761,
                        "name": "IERC1155Inventory",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1599,
                        "src": "7936:17:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155Inventory_$1599",
                          "typeString": "contract IERC1155Inventory"
                        }
                      },
                      {
                        "id": 4762,
                        "name": "IERC721",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5285,
                        "src": "7955:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC721_$5285",
                          "typeString": "contract IERC721"
                        }
                      }
                    ],
                    "src": "7927:36:21"
                  },
                  "parameters": {
                    "id": 4760,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4759,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 4767,
                        "src": "7898:13:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4758,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7898:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7897:15:21"
                  },
                  "returnParameters": {
                    "id": 4766,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4765,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4767,
                        "src": "7973:7:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4764,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7973:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7972:9:21"
                  },
                  "scope": 4768,
                  "src": "7881:101:21",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 4769,
              "src": "453:7531:21"
            }
          ],
          "src": "33:7952:21"
        },
        "id": 21
      },
      "contracts/token/ERC1155721/interfaces/IERC1155721InventoryBurnable.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155721/interfaces/IERC1155721InventoryBurnable.sol",
          "exportedSymbols": {
            "IERC1155721InventoryBurnable": [
              4803
            ]
          },
          "id": 4804,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4770,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:22"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 4771,
                "nodeType": "StructuredDocumentation",
                "src": "66:333:22",
                "text": " @title ERC1155 Inventory with support for ERC721, optional extension: Burnable.\n @dev The ERC721 Burnable function `burnFrom(address,uint256)` is not provided\n  the ERC1155 Burnable function `burnFrom(address,uint256,uint256)` can be used instead.\n @dev Note: The ERC-165 identifier for this interface is 0x6059f1b4."
              },
              "fullyImplemented": false,
              "id": 4803,
              "linearizedBaseContracts": [
                4803
              ],
              "name": "IERC1155721InventoryBurnable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 4772,
                    "nodeType": "StructuredDocumentation",
                    "src": "445:842:22",
                    "text": " Burns some token (ERC1155-compatible).\n @dev Reverts if the sender is not approved.\n @dev Reverts if `id` does not represent a token.\n @dev Reverts if `id` represents a Fungible Token and `value` is 0.\n @dev Reverts if `id` represents a Fungible Token and `value` is higher than `from`'s balance.\n @dev Reverts if `id` represents a Non-Fungible Token and `value` is not 1.\n @dev Reverts if `id` represents a Non-Fungible Token which is not owned by `from`.\n @dev Emits an {IERC721-Transfer} event to the zero address if `id` represents a Non-Fungible Token.\n @dev Emits an {IERC1155-TransferSingle} event to the zero address.\n @param from Address of the current token owner.\n @param id Identifier of the token to burn.\n @param value Amount of token to burn."
                  },
                  "functionSelector": "124d91e5",
                  "id": 4781,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burnFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4779,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4774,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4781,
                        "src": "1319:12:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4773,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1319:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4776,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 4781,
                        "src": "1341:10:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4775,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1341:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4778,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 4781,
                        "src": "1361:13:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4777,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1361:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1309:71:22"
                  },
                  "returnParameters": {
                    "id": 4780,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1389:0:22"
                  },
                  "scope": 4803,
                  "src": "1292:98:22",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 4782,
                    "nodeType": "StructuredDocumentation",
                    "src": "1396:953:22",
                    "text": " Burns multiple tokens (ERC1155-compatible).\n @dev Reverts if `ids` and `values` have different lengths.\n @dev Reverts if the sender is not approved.\n @dev Reverts if one of `ids` does not represent a token.\n @dev Reverts if one of `ids` represents a Fungible Token and `value` is 0.\n @dev Reverts if one of `ids` represents a Fungible Token and `value` is higher than `from`'s balance.\n @dev Reverts if one of `ids` represents a Non-Fungible Token and `value` is not 1.\n @dev Reverts if one of `ids` represents a Non-Fungible Token which is not owned by `from`.\n @dev Emits an {IERC721-Transfer} event to the zero address for each burnt Non-Fungible Token.\n @dev Emits an {IERC1155-TransferBatch} event to the zero address.\n @param from Address of the current tokens owner.\n @param ids Identifiers of the tokens to burn.\n @param values Amounts of tokens to burn."
                  },
                  "functionSelector": "80534934",
                  "id": 4793,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchBurnFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4791,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4784,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4793,
                        "src": "2386:12:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4783,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2386:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4787,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 4793,
                        "src": "2408:22:22",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4785,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2408:7:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4786,
                          "nodeType": "ArrayTypeName",
                          "src": "2408:9:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4790,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 4793,
                        "src": "2440:25:22",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4788,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2440:7:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4789,
                          "nodeType": "ArrayTypeName",
                          "src": "2440:9:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2376:95:22"
                  },
                  "returnParameters": {
                    "id": 4792,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2480:0:22"
                  },
                  "scope": 4803,
                  "src": "2354:127:22",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 4794,
                    "nodeType": "StructuredDocumentation",
                    "src": "2487:531:22",
                    "text": " Burns a batch of Non-Fungible Tokens (ERC721-compatible).\n @dev Reverts if the sender is not approved.\n @dev Reverts if one of `nftIds` does not represent a Non-Fungible Token.\n @dev Reverts if one of `nftIds` is not owned by `from`.\n @dev Emits an {IERC721-Transfer} event to the zero address for each of `nftIds`.\n @dev Emits an {IERC1155-TransferBatch} event to the zero address.\n @param from Current token owner.\n @param nftIds Identifiers of the tokens to transfer."
                  },
                  "functionSelector": "f2472965",
                  "id": 4802,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchBurnFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4800,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4796,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4802,
                        "src": "3046:12:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4795,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3046:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4799,
                        "mutability": "mutable",
                        "name": "nftIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 4802,
                        "src": "3060:25:22",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4797,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3060:7:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4798,
                          "nodeType": "ArrayTypeName",
                          "src": "3060:9:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3045:41:22"
                  },
                  "returnParameters": {
                    "id": 4801,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3095:0:22"
                  },
                  "scope": 4803,
                  "src": "3023:73:22",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 4804,
              "src": "400:2698:22"
            }
          ],
          "src": "33:3066:22"
        },
        "id": 22
      },
      "contracts/token/ERC1155721/interfaces/IERC1155721InventoryDeliverable.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155721/interfaces/IERC1155721InventoryDeliverable.sol",
          "exportedSymbols": {
            "IERC1155721InventoryDeliverable": [
              4822
            ]
          },
          "id": 4823,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4805,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:23"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 4806,
                "nodeType": "StructuredDocumentation",
                "src": "66:183:23",
                "text": " @title ERC1155 Inventory with support for ERC721, optional extension: Deliverable.\n Provides a minting function which can be used to deliver tokens to several recipients."
              },
              "fullyImplemented": false,
              "id": 4822,
              "linearizedBaseContracts": [
                4822
              ],
              "name": "IERC1155721InventoryDeliverable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 4807,
                    "nodeType": "StructuredDocumentation",
                    "src": "298:1254:23",
                    "text": " Safely mints some tokens to a list of recipients.\n @dev Reverts if `recipients`, `ids` and `values` have different lengths.\n @dev Reverts if one of `recipients` is the zero address.\n @dev Reverts if one of `ids` is not a token.\n @dev Reverts if one of `ids` represents a Non-Fungible Token and its `value` is not 1.\n @dev Reverts if one of `ids` represents a Non-Fungible Token which has already been minted.\n @dev Reverts if one of `ids` represents a Fungible Token and its `value` is 0.\n @dev Reverts if one of `ids` represents a Fungible Token and there is an overflow of supply.\n @dev Reverts if one of `recipients` is a contract and the call to {IERC1155TokenReceiver-onERC1155Received} fails or is refused.\n @dev Emits an {IERC721-Transfer} event from the zero address for each `id` representing a Non-Fungible Token.\n @dev Emits an {IERC1155-TransferSingle} event from the zero address.\n @param recipients Addresses of the new token owners.\n @param ids Identifiers of the tokens to mint.\n @param values Amounts of tokens to mint.\n @param data Optional data to send along to the receiver contract(s), if any. All receivers receive the same data."
                  },
                  "functionSelector": "e8ab9ccc",
                  "id": 4821,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeDeliver",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4819,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4810,
                        "mutability": "mutable",
                        "name": "recipients",
                        "nodeType": "VariableDeclaration",
                        "scope": 4821,
                        "src": "1587:29:23",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4808,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1587:7:23",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 4809,
                          "nodeType": "ArrayTypeName",
                          "src": "1587:9:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4813,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 4821,
                        "src": "1626:22:23",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4811,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1626:7:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4812,
                          "nodeType": "ArrayTypeName",
                          "src": "1626:9:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4816,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 4821,
                        "src": "1658:25:23",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4814,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1658:7:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4815,
                          "nodeType": "ArrayTypeName",
                          "src": "1658:9:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4818,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 4821,
                        "src": "1693:19:23",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4817,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1693:5:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1577:141:23"
                  },
                  "returnParameters": {
                    "id": 4820,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1727:0:23"
                  },
                  "scope": 4822,
                  "src": "1557:171:23",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 4823,
              "src": "250:1480:23"
            }
          ],
          "src": "33:1698:23"
        },
        "id": 23
      },
      "contracts/token/ERC1155721/interfaces/IERC1155721InventoryMintable.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155721/interfaces/IERC1155721InventoryMintable.sol",
          "exportedSymbols": {
            "IERC1155721InventoryMintable": [
              4879
            ]
          },
          "id": 4880,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4824,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:24"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 4825,
                "nodeType": "StructuredDocumentation",
                "src": "66:277:24",
                "text": " @title ERC1155 Inventory with support for ERC721, optional extension: Mintable.\n @dev The ERC721 Mintable function `safeMint(address,uint256,bytes)` is not provided as\n  the ERC1155 Mintable function `safeMint(address,uint256,uint256,bytes)` can be used instead."
              },
              "fullyImplemented": false,
              "id": 4879,
              "linearizedBaseContracts": [
                4879
              ],
              "name": "IERC1155721InventoryMintable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 4826,
                    "nodeType": "StructuredDocumentation",
                    "src": "389:1017:24",
                    "text": " Safely mints some token (ERC1155-compatible).\n @dev Reverts if `to` is the zero address.\n @dev Reverts if `id` is not a token.\n @dev Reverts if `id` represents a Non-Fungible Token and `value` is not 1.\n @dev Reverts if `id` represents a Non-Fungible Token which has already been minted.\n @dev Reverts if `id` represents a Fungible Token and `value` is 0.\n @dev Reverts if `id` represents a Fungible Token and there is an overflow of supply.\n @dev Reverts if `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155Received} fails or is refused.\n @dev Emits an {IERC721-Transfer} event from the zero address if `id` represents a Non-Fungible Token.\n @dev Emits an {IERC1155-TransferSingle} event from the zero address.\n @param to Address of the new token owner.\n @param id Identifier of the token to mint.\n @param value Amount of token to mint.\n @param data Optional data to send along to a receiver contract."
                  },
                  "functionSelector": "5cfa9297",
                  "id": 4837,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeMint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4835,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4828,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4837,
                        "src": "1438:10:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4827,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1438:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4830,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 4837,
                        "src": "1458:10:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4829,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1458:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4832,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 4837,
                        "src": "1478:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4831,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1478:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4834,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 4837,
                        "src": "1501:19:24",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4833,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1501:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1428:98:24"
                  },
                  "returnParameters": {
                    "id": 4836,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1535:0:24"
                  },
                  "scope": 4879,
                  "src": "1411:125:24",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 4838,
                    "nodeType": "StructuredDocumentation",
                    "src": "1542:1154:24",
                    "text": " Safely mints a batch of tokens (ERC1155-compatible).\n @dev Reverts if `ids` and `values` have different lengths.\n @dev Reverts if `to` is the zero address.\n @dev Reverts if one of `ids` is not a token.\n @dev Reverts if one of `ids` represents a Non-Fungible Token and its paired value is not 1.\n @dev Reverts if one of `ids` represents a Non-Fungible Token which has already been minted.\n @dev Reverts if one of `ids` represents a Fungible Token and its paired value is 0.\n @dev Reverts if one of `ids` represents a Fungible Token and there is an overflow of supply.\n @dev Reverts if `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155batchReceived} fails or is refused.\n @dev Emits an {IERC721-Transfer} event from the zero address for each Non-Fungible Token minted.\n @dev Emits an {IERC1155-TransferBatch} event from the zero address.\n @param to Address of the new tokens owner.\n @param ids Identifiers of the tokens to mint.\n @param values Amounts of tokens to mint.\n @param data Optional data to send along to a receiver contract."
                  },
                  "functionSelector": "0d6a5bbb",
                  "id": 4851,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeBatchMint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4849,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4840,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4851,
                        "src": "2733:10:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4839,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2733:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4843,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 4851,
                        "src": "2753:22:24",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4841,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2753:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4842,
                          "nodeType": "ArrayTypeName",
                          "src": "2753:9:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4846,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 4851,
                        "src": "2785:25:24",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4844,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2785:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4845,
                          "nodeType": "ArrayTypeName",
                          "src": "2785:9:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4848,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 4851,
                        "src": "2820:19:24",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4847,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2820:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2723:122:24"
                  },
                  "returnParameters": {
                    "id": 4850,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2854:0:24"
                  },
                  "scope": 4879,
                  "src": "2701:154:24",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 4852,
                    "nodeType": "StructuredDocumentation",
                    "src": "2861:633:24",
                    "text": " Unsafely mints a Non-Fungible Token (ERC721-compatible).\n @dev Reverts if `to` is the zero address.\n @dev Reverts if `nftId` does not represent a Non-Fungible Token.\n @dev Reverts if `nftId` has already been minted.\n @dev Emits an {IERC721-Transfer} event from the zero address.\n @dev Emits an {IERC1155-TransferSingle} event from the zero address.\n @dev If `to` is a contract and supports ERC1155TokenReceiver, calls {IERC1155TokenReceiver-onERC1155Received} with empty data.\n @param to Address of the new token owner.\n @param nftId Identifier of the token to mint."
                  },
                  "functionSelector": "40c10f19",
                  "id": 4859,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4857,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4854,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4859,
                        "src": "3513:10:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4853,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3513:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4856,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 4859,
                        "src": "3525:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4855,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3525:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3512:27:24"
                  },
                  "returnParameters": {
                    "id": 4858,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3548:0:24"
                  },
                  "scope": 4879,
                  "src": "3499:50:24",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 4860,
                    "nodeType": "StructuredDocumentation",
                    "src": "3555:687:24",
                    "text": " Unsafely mints a batch of Non-Fungible Tokens (ERC721-compatible).\n @dev Reverts if `to` is the zero address.\n @dev Reverts if one of `nftIds` does not represent a Non-Fungible Token.\n @dev Reverts if one of `nftIds` has already been minted.\n @dev Emits an {IERC721-Transfer} event from the zero address for each of `nftIds`.\n @dev Emits an {IERC1155-TransferBatch} event from the zero address.\n @dev If `to` is a contract and supports ERC1155TokenReceiver, calls {IERC1155TokenReceiver-onERC1155BatchReceived} with empty data.\n @param to Address of the new token owner.\n @param nftIds Identifiers of the tokens to mint."
                  },
                  "functionSelector": "4684d7e9",
                  "id": 4868,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchMint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4866,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4862,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4868,
                        "src": "4266:10:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4861,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4266:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4865,
                        "mutability": "mutable",
                        "name": "nftIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 4868,
                        "src": "4278:25:24",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4863,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4278:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4864,
                          "nodeType": "ArrayTypeName",
                          "src": "4278:9:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4265:39:24"
                  },
                  "returnParameters": {
                    "id": 4867,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4313:0:24"
                  },
                  "scope": 4879,
                  "src": "4247:67:24",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 4869,
                    "nodeType": "StructuredDocumentation",
                    "src": "4320:708:24",
                    "text": " Safely mints a token (ERC721-compatible).\n @dev Reverts if `to` is the zero address.\n @dev Reverts if `tokenId` has already ben minted.\n @dev Reverts if `to` is a contract which does not implement IERC721Receiver or IERC1155TokenReceiver.\n @dev Reverts if `to` is an IERC1155TokenReceiver or IERC721TokenReceiver contract which refuses the transfer.\n @dev Emits an {IERC721-Transfer} event from the zero address.\n @dev Emits an {IERC1155-TransferSingle} event from the zero address.\n @param to Address of the new token owner.\n @param nftId Identifier of the token to mint.\n @param data Optional data to pass along to the receiver call."
                  },
                  "functionSelector": "8832e6e3",
                  "id": 4878,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeMint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4876,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4871,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4878,
                        "src": "5060:10:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4870,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5060:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4873,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 4878,
                        "src": "5080:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4872,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5080:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4875,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 4878,
                        "src": "5103:19:24",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4874,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5103:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5050:78:24"
                  },
                  "returnParameters": {
                    "id": 4877,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5137:0:24"
                  },
                  "scope": 4879,
                  "src": "5033:105:24",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 4880,
              "src": "344:4796:24"
            }
          ],
          "src": "33:5108:24"
        },
        "id": 24
      },
      "contracts/token/ERC1155721/mocks/ERC1155721InventoryBurnableMock.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155721/mocks/ERC1155721InventoryBurnableMock.sol",
          "exportedSymbols": {
            "ERC1155721InventoryBurnable": [
              4620
            ],
            "ERC1155721InventoryBurnableMock": [
              5199
            ],
            "IERC1155721InventoryBurnable": [
              4803
            ],
            "IERC1155721InventoryDeliverable": [
              4822
            ],
            "IERC1155721InventoryMintable": [
              4879
            ],
            "IERC1155InventoryCreator": [
              1611
            ],
            "IERC1155MetadataURI": [
              1660
            ],
            "IERC165": [
              218
            ],
            "IForwarderRegistry": [
              5364
            ],
            "ManagedIdentity": [
              239
            ],
            "MinterRole": [
              125
            ],
            "NFTBaseMetadataURI": [
              735
            ],
            "Recoverable": [
              557
            ],
            "UsingUniversalForwarding": [
              5530
            ]
          },
          "id": 5200,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4881,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:25"
            },
            {
              "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol",
              "file": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol",
              "id": 4883,
              "nodeType": "ImportDirective",
              "scope": 5200,
              "sourceUnit": 5365,
              "src": "66:108:25",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4882,
                    "name": "IForwarderRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:18:25",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "id": 4885,
              "nodeType": "ImportDirective",
              "scope": 5200,
              "sourceUnit": 219,
              "src": "175:93:25",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4884,
                    "name": "IERC165",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "183:7:25",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155MetadataURI.sol",
              "file": "./../../../token/ERC1155/interfaces/IERC1155MetadataURI.sol",
              "id": 4887,
              "nodeType": "ImportDirective",
              "scope": 5200,
              "sourceUnit": 1661,
              "src": "269:96:25",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4886,
                    "name": "IERC1155MetadataURI",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "277:19:25",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155InventoryCreator.sol",
              "file": "./../../../token/ERC1155/interfaces/IERC1155InventoryCreator.sol",
              "id": 4889,
              "nodeType": "ImportDirective",
              "scope": 5200,
              "sourceUnit": 1612,
              "src": "366:106:25",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4888,
                    "name": "IERC1155InventoryCreator",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "374:24:25",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155721/interfaces/IERC1155721InventoryMintable.sol",
              "file": "./../interfaces/IERC1155721InventoryMintable.sol",
              "id": 4891,
              "nodeType": "ImportDirective",
              "scope": 5200,
              "sourceUnit": 4880,
              "src": "473:94:25",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4890,
                    "name": "IERC1155721InventoryMintable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "481:28:25",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155721/interfaces/IERC1155721InventoryDeliverable.sol",
              "file": "./../interfaces/IERC1155721InventoryDeliverable.sol",
              "id": 4893,
              "nodeType": "ImportDirective",
              "scope": 5200,
              "sourceUnit": 4823,
              "src": "568:100:25",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4892,
                    "name": "IERC1155721InventoryDeliverable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "576:31:25",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155721/interfaces/IERC1155721InventoryBurnable.sol",
              "file": "./../interfaces/IERC1155721InventoryBurnable.sol",
              "id": 4895,
              "nodeType": "ImportDirective",
              "scope": 5200,
              "sourceUnit": 4804,
              "src": "669:94:25",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4894,
                    "name": "IERC1155721InventoryBurnable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "677:28:25",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "id": 4897,
              "nodeType": "ImportDirective",
              "scope": 5200,
              "sourceUnit": 240,
              "src": "764:102:25",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4896,
                    "name": "ManagedIdentity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "772:15:25",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol",
              "id": 4899,
              "nodeType": "ImportDirective",
              "scope": 5200,
              "sourceUnit": 569,
              "src": "867:93:25",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4898,
                    "name": "Recoverable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "875:11:25",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol",
              "file": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol",
              "id": 4901,
              "nodeType": "ImportDirective",
              "scope": 5200,
              "sourceUnit": 5531,
              "src": "961:120:25",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4900,
                    "name": "UsingUniversalForwarding",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "969:24:25",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol",
              "id": 4903,
              "nodeType": "ImportDirective",
              "scope": 5200,
              "sourceUnit": 126,
              "src": "1082:92:25",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4902,
                    "name": "MinterRole",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "1090:10:25",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155721/ERC1155721InventoryBurnable.sol",
              "file": "./../ERC1155721InventoryBurnable.sol",
              "id": 4905,
              "nodeType": "ImportDirective",
              "scope": 5200,
              "sourceUnit": 4621,
              "src": "1175:81:25",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4904,
                    "name": "ERC1155721InventoryBurnable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "1183:27:25",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/metadata/NFTBaseMetadataURI.sol",
              "file": "./../../../metadata/NFTBaseMetadataURI.sol",
              "id": 4907,
              "nodeType": "ImportDirective",
              "scope": 5200,
              "sourceUnit": 736,
              "src": "1257:78:25",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4906,
                    "name": "NFTBaseMetadataURI",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "1265:18:25",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 4909,
                    "name": "Recoverable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 557,
                    "src": "1445:11:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Recoverable_$557",
                      "typeString": "contract Recoverable"
                    }
                  },
                  "id": 4910,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1445:11:25"
                },
                {
                  "baseName": {
                    "id": 4911,
                    "name": "UsingUniversalForwarding",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5530,
                    "src": "1462:24:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_UsingUniversalForwarding_$5530",
                      "typeString": "contract UsingUniversalForwarding"
                    }
                  },
                  "id": 4912,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1462:24:25"
                },
                {
                  "baseName": {
                    "id": 4913,
                    "name": "ERC1155721InventoryBurnable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4620,
                    "src": "1492:27:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155721InventoryBurnable_$4620",
                      "typeString": "contract ERC1155721InventoryBurnable"
                    }
                  },
                  "id": 4914,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1492:27:25"
                },
                {
                  "baseName": {
                    "id": 4915,
                    "name": "IERC1155721InventoryMintable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4879,
                    "src": "1525:28:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155721InventoryMintable_$4879",
                      "typeString": "contract IERC1155721InventoryMintable"
                    }
                  },
                  "id": 4916,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1525:28:25"
                },
                {
                  "baseName": {
                    "id": 4917,
                    "name": "IERC1155721InventoryDeliverable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4822,
                    "src": "1559:31:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155721InventoryDeliverable_$4822",
                      "typeString": "contract IERC1155721InventoryDeliverable"
                    }
                  },
                  "id": 4918,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1559:31:25"
                },
                {
                  "baseName": {
                    "id": 4919,
                    "name": "IERC1155InventoryCreator",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1611,
                    "src": "1596:24:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155InventoryCreator_$1611",
                      "typeString": "contract IERC1155InventoryCreator"
                    }
                  },
                  "id": 4920,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1596:24:25"
                },
                {
                  "baseName": {
                    "id": 4921,
                    "name": "NFTBaseMetadataURI",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 735,
                    "src": "1626:18:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_NFTBaseMetadataURI_$735",
                      "typeString": "contract NFTBaseMetadataURI"
                    }
                  },
                  "id": 4922,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1626:18:25"
                },
                {
                  "baseName": {
                    "id": 4923,
                    "name": "MinterRole",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 125,
                    "src": "1650:10:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MinterRole_$125",
                      "typeString": "contract MinterRole"
                    }
                  },
                  "id": 4924,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1650:10:25"
                }
              ],
              "contractDependencies": [
                22,
                125,
                206,
                218,
                239,
                557,
                735,
                1299,
                1496,
                1599,
                1611,
                1636,
                1648,
                1660,
                3977,
                4620,
                4768,
                4803,
                4822,
                4879,
                5285,
                5300,
                5324,
                5352,
                5389,
                5530
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 4908,
                "nodeType": "StructuredDocumentation",
                "src": "1337:59:25",
                "text": " @title ERC1155 & ERC721 Inventory Burnable Mock."
              },
              "fullyImplemented": true,
              "id": 5199,
              "linearizedBaseContracts": [
                5199,
                125,
                735,
                1611,
                4822,
                4879,
                4620,
                3977,
                1299,
                1648,
                1660,
                5324,
                4768,
                5300,
                5285,
                1599,
                1636,
                1496,
                218,
                5530,
                5352,
                5389,
                557,
                206,
                22,
                239,
                4803
              ],
              "name": "ERC1155721InventoryBurnableMock",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 4946,
                    "nodeType": "Block",
                    "src": "2013:2:25",
                    "statements": []
                  },
                  "id": 4947,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "hexValue": "45524331313535373231496e76656e746f72794275726e61626c654d6f636b",
                          "id": 4933,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1841:33:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_3c3d6236bebfc3175253671b157ab2e7de1b99efad316225146573ccd7209dd1",
                            "typeString": "literal_string \"ERC1155721InventoryBurnableMock\""
                          },
                          "value": "ERC1155721InventoryBurnableMock"
                        },
                        {
                          "hexValue": "494e5642",
                          "id": 4934,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1876:6:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_8da0f8c7e43b883b82e6f3ff5ea1bd65223294c1f6932fe6157722292759209d",
                            "typeString": "literal_string \"INVB\""
                          },
                          "value": "INVB"
                        },
                        {
                          "id": 4935,
                          "name": "collectionMaskLength",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4930,
                          "src": "1884:20:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 4936,
                      "modifierName": {
                        "id": 4932,
                        "name": "ERC1155721InventoryBurnable",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4620,
                        "src": "1813:27:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC1155721InventoryBurnable_$4620_$",
                          "typeString": "type(contract ERC1155721InventoryBurnable)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1813:92:25"
                    },
                    {
                      "arguments": [
                        {
                          "id": 4938,
                          "name": "forwarderRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4926,
                          "src": "1939:17:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IForwarderRegistry_$5364",
                            "typeString": "contract IForwarderRegistry"
                          }
                        },
                        {
                          "id": 4939,
                          "name": "universalForwarder",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4928,
                          "src": "1958:18:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 4940,
                      "modifierName": {
                        "id": 4937,
                        "name": "UsingUniversalForwarding",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5530,
                        "src": "1914:24:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$5530_$",
                          "typeString": "type(contract UsingUniversalForwarding)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1914:63:25"
                    },
                    {
                      "arguments": [
                        {
                          "expression": {
                            "id": 4942,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "1997:3:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 4943,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "1997:10:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        }
                      ],
                      "id": 4944,
                      "modifierName": {
                        "id": 4941,
                        "name": "MinterRole",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 125,
                        "src": "1986:10:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_MinterRole_$125_$",
                          "typeString": "type(contract MinterRole)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1986:22:25"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4931,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4926,
                        "mutability": "mutable",
                        "name": "forwarderRegistry",
                        "nodeType": "VariableDeclaration",
                        "scope": 4947,
                        "src": "1688:36:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IForwarderRegistry_$5364",
                          "typeString": "contract IForwarderRegistry"
                        },
                        "typeName": {
                          "id": 4925,
                          "name": "IForwarderRegistry",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 5364,
                          "src": "1688:18:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IForwarderRegistry_$5364",
                            "typeString": "contract IForwarderRegistry"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4928,
                        "mutability": "mutable",
                        "name": "universalForwarder",
                        "nodeType": "VariableDeclaration",
                        "scope": 4947,
                        "src": "1734:26:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4927,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1734:7:25",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4930,
                        "mutability": "mutable",
                        "name": "collectionMaskLength",
                        "nodeType": "VariableDeclaration",
                        "scope": 4947,
                        "src": "1770:28:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4929,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1770:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1678:126:25"
                  },
                  "returnParameters": {
                    "id": 4945,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2013:0:25"
                  },
                  "scope": 5199,
                  "src": "1667:348:25",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    4032
                  ],
                  "body": {
                    "id": 4968,
                    "nodeType": "Block",
                    "src": "2269:121:25",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 4966,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 4961,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 4956,
                              "name": "interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4950,
                              "src": "2286:11:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4958,
                                    "name": "IERC1155InventoryCreator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1611,
                                    "src": "2306:24:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155InventoryCreator_$1611_$",
                                      "typeString": "type(contract IERC1155InventoryCreator)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155InventoryCreator_$1611_$",
                                      "typeString": "type(contract IERC1155InventoryCreator)"
                                    }
                                  ],
                                  "id": 4957,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "2301:4:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 4959,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2301:30:25",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155InventoryCreator_$1611",
                                  "typeString": "type(contract IERC1155InventoryCreator)"
                                }
                              },
                              "id": 4960,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "2301:42:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "2286:57:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 4964,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4950,
                                "src": "2371:11:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 4962,
                                "name": "super",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -25,
                                "src": "2347:5:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_super$_ERC1155721InventoryBurnableMock_$5199",
                                  "typeString": "contract super ERC1155721InventoryBurnableMock"
                                }
                              },
                              "id": 4963,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4032,
                              "src": "2347:23:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 4965,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2347:36:25",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "2286:97:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 4955,
                        "id": 4967,
                        "nodeType": "Return",
                        "src": "2279:104:25"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4948,
                    "nodeType": "StructuredDocumentation",
                    "src": "2150:23:25",
                    "text": "@inheritdoc IERC165"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 4969,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4952,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2245:8:25"
                  },
                  "parameters": {
                    "id": 4951,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4950,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nodeType": "VariableDeclaration",
                        "scope": 4969,
                        "src": "2205:18:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 4949,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "2205:6:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2204:20:25"
                  },
                  "returnParameters": {
                    "id": 4955,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4954,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4969,
                        "src": "2263:4:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4953,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2263:4:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2262:6:25"
                  },
                  "scope": 5199,
                  "src": "2178:212:25",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1872
                  ],
                  "body": {
                    "id": 4982,
                    "nodeType": "Block",
                    "src": "2643:32:25",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4979,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4972,
                              "src": "2665:2:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4978,
                            "name": "_uri",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 734,
                            "src": "2660:4:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_string_memory_ptr_$",
                              "typeString": "function (uint256) view returns (string memory)"
                            }
                          },
                          "id": 4980,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2660:8:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 4977,
                        "id": 4981,
                        "nodeType": "Return",
                        "src": "2653:15:25"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4970,
                    "nodeType": "StructuredDocumentation",
                    "src": "2525:35:25",
                    "text": "@inheritdoc IERC1155MetadataURI"
                  },
                  "functionSelector": "0e89341c",
                  "id": 4983,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "uri",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4974,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2610:8:25"
                  },
                  "parameters": {
                    "id": 4973,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4972,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 4983,
                        "src": "2578:10:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4971,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2578:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2577:12:25"
                  },
                  "returnParameters": {
                    "id": 4977,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4976,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4983,
                        "src": "2628:13:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4975,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2628:6:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2627:15:25"
                  },
                  "scope": 5199,
                  "src": "2565:110:25",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1610
                  ],
                  "body": {
                    "id": 4996,
                    "nodeType": "Block",
                    "src": "2935:46:25",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4993,
                              "name": "collectionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4986,
                              "src": "2961:12:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4992,
                            "name": "_creator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1210,
                            "src": "2952:8:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (uint256) view returns (address)"
                            }
                          },
                          "id": 4994,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2952:22:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 4991,
                        "id": 4995,
                        "nodeType": "Return",
                        "src": "2945:29:25"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4984,
                    "nodeType": "StructuredDocumentation",
                    "src": "2810:40:25",
                    "text": "@inheritdoc IERC1155InventoryCreator"
                  },
                  "functionSelector": "510b5158",
                  "id": 4997,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "creator",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4988,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2908:8:25"
                  },
                  "parameters": {
                    "id": 4987,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4986,
                        "mutability": "mutable",
                        "name": "collectionId",
                        "nodeType": "VariableDeclaration",
                        "scope": 4997,
                        "src": "2872:20:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4985,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2872:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2871:22:25"
                  },
                  "returnParameters": {
                    "id": 4991,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4990,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4997,
                        "src": "2926:7:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4989,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2926:7:25",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2925:9:25"
                  },
                  "scope": 5199,
                  "src": "2855:126:25",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 5012,
                    "nodeType": "Block",
                    "src": "3536:89:25",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5004,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  5176
                                ],
                                "referencedDeclaration": 5176,
                                "src": "3564:10:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 5005,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3564:12:25",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 5003,
                            "name": "_requireOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 205,
                            "src": "3546:17:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 5006,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3546:31:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5007,
                        "nodeType": "ExpressionStatement",
                        "src": "3546:31:25"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5009,
                              "name": "collectionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5000,
                              "src": "3605:12:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5008,
                            "name": "_createCollection",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1189,
                            "src": "3587:17:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 5010,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3587:31:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5011,
                        "nodeType": "ExpressionStatement",
                        "src": "3587:31:25"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4998,
                    "nodeType": "StructuredDocumentation",
                    "src": "3116:358:25",
                    "text": " Creates a collection.\n @dev Reverts if the sender is not the contract owner.\n @dev Reverts if `collectionId` does not represent a collection.\n @dev Reverts if `collectionId` has already been created.\n @dev Emits a {IERC1155Inventory-CollectionCreated} event.\n @param collectionId Identifier of the collection."
                  },
                  "functionSelector": "d0011d9d",
                  "id": 5013,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "createCollection",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5001,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5000,
                        "mutability": "mutable",
                        "name": "collectionId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5013,
                        "src": "3505:20:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4999,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3505:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3504:22:25"
                  },
                  "returnParameters": {
                    "id": 5002,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3536:0:25"
                  },
                  "scope": 5199,
                  "src": "3479:146:25",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    4859
                  ],
                  "body": {
                    "id": 5034,
                    "nodeType": "Block",
                    "src": "3928:82:25",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5023,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  5176
                                ],
                                "referencedDeclaration": 5176,
                                "src": "3953:10:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 5024,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3953:12:25",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 5022,
                            "name": "_requireMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "3938:14:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 5025,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3938:28:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5026,
                        "nodeType": "ExpressionStatement",
                        "src": "3938:28:25"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5028,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5016,
                              "src": "3982:2:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5029,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5018,
                              "src": "3986:5:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 5030,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3993:2:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 5031,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3997:5:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 5027,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2873,
                            "src": "3976:5:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,bytes memory,bool)"
                            }
                          },
                          "id": 5032,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3976:27:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5033,
                        "nodeType": "ExpressionStatement",
                        "src": "3976:27:25"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5014,
                    "nodeType": "StructuredDocumentation",
                    "src": "3760:96:25",
                    "text": "@inheritdoc IERC1155721InventoryMintable\n @dev Reverts if the sender is not a minter."
                  },
                  "functionSelector": "40c10f19",
                  "id": 5035,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5020,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3919:8:25"
                  },
                  "parameters": {
                    "id": 5019,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5016,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 5035,
                        "src": "3875:10:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5015,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3875:7:25",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5018,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5035,
                        "src": "3887:13:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5017,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3887:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3874:27:25"
                  },
                  "returnParameters": {
                    "id": 5021,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3928:0:25"
                  },
                  "scope": 5199,
                  "src": "3861:149:25",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    4868
                  ],
                  "body": {
                    "id": 5055,
                    "nodeType": "Block",
                    "src": "4201:77:25",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5046,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  5176
                                ],
                                "referencedDeclaration": 5176,
                                "src": "4226:10:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 5047,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4226:12:25",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 5045,
                            "name": "_requireMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "4211:14:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 5048,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4211:28:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5049,
                        "nodeType": "ExpressionStatement",
                        "src": "4211:28:25"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5051,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5038,
                              "src": "4260:2:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5052,
                              "name": "nftIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5041,
                              "src": "4264:6:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            ],
                            "id": 5050,
                            "name": "_batchMint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3066,
                            "src": "4249:10:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256[] memory)"
                            }
                          },
                          "id": 5053,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4249:22:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5054,
                        "nodeType": "ExpressionStatement",
                        "src": "4249:22:25"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5036,
                    "nodeType": "StructuredDocumentation",
                    "src": "4016:96:25",
                    "text": "@inheritdoc IERC1155721InventoryMintable\n @dev Reverts if the sender is not a minter."
                  },
                  "functionSelector": "4684d7e9",
                  "id": 5056,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchMint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5043,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4192:8:25"
                  },
                  "parameters": {
                    "id": 5042,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5038,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 5056,
                        "src": "4136:10:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5037,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4136:7:25",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5041,
                        "mutability": "mutable",
                        "name": "nftIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 5056,
                        "src": "4148:25:25",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5039,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4148:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5040,
                          "nodeType": "ArrayTypeName",
                          "src": "4148:9:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4135:39:25"
                  },
                  "returnParameters": {
                    "id": 5044,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4201:0:25"
                  },
                  "scope": 5199,
                  "src": "4117:161:25",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    4878
                  ],
                  "body": {
                    "id": 5079,
                    "nodeType": "Block",
                    "src": "4507:83:25",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5068,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  5176
                                ],
                                "referencedDeclaration": 5176,
                                "src": "4532:10:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 5069,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4532:12:25",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 5067,
                            "name": "_requireMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "4517:14:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 5070,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4517:28:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5071,
                        "nodeType": "ExpressionStatement",
                        "src": "4517:28:25"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5073,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5059,
                              "src": "4561:2:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5074,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5061,
                              "src": "4565:5:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 5075,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5063,
                              "src": "4572:4:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "hexValue": "74727565",
                              "id": 5076,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4578:4:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 5072,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2873,
                            "src": "4555:5:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,bytes memory,bool)"
                            }
                          },
                          "id": 5077,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4555:28:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5078,
                        "nodeType": "ExpressionStatement",
                        "src": "4555:28:25"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5057,
                    "nodeType": "StructuredDocumentation",
                    "src": "4284:96:25",
                    "text": "@inheritdoc IERC1155721InventoryMintable\n @dev Reverts if the sender is not a minter."
                  },
                  "functionSelector": "8832e6e3",
                  "id": 5080,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeMint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5065,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4498:8:25"
                  },
                  "parameters": {
                    "id": 5064,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5059,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 5080,
                        "src": "4412:10:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5058,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4412:7:25",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5061,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5080,
                        "src": "4432:13:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5060,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4432:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5063,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 5080,
                        "src": "4455:19:25",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5062,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4455:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4402:78:25"
                  },
                  "returnParameters": {
                    "id": 5066,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4507:0:25"
                  },
                  "scope": 5199,
                  "src": "4385:205:25",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    4837
                  ],
                  "body": {
                    "id": 5105,
                    "nodeType": "Block",
                    "src": "4839:85:25",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5094,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  5176
                                ],
                                "referencedDeclaration": 5176,
                                "src": "4864:10:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 5095,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4864:12:25",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 5093,
                            "name": "_requireMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "4849:14:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 5096,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4849:28:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5097,
                        "nodeType": "ExpressionStatement",
                        "src": "4849:28:25"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5099,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5083,
                              "src": "4897:2:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5100,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5085,
                              "src": "4901:2:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 5101,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5087,
                              "src": "4905:5:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 5102,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5089,
                              "src": "4912:4:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 5098,
                            "name": "_safeMint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3159,
                            "src": "4887:9:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256,uint256,bytes memory)"
                            }
                          },
                          "id": 5103,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4887:30:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5104,
                        "nodeType": "ExpressionStatement",
                        "src": "4887:30:25"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5081,
                    "nodeType": "StructuredDocumentation",
                    "src": "4596:96:25",
                    "text": "@inheritdoc IERC1155721InventoryMintable\n @dev Reverts if the sender is not a minter."
                  },
                  "functionSelector": "5cfa9297",
                  "id": 5106,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeMint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5091,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4830:8:25"
                  },
                  "parameters": {
                    "id": 5090,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5083,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 5106,
                        "src": "4724:10:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5082,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4724:7:25",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5085,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 5106,
                        "src": "4744:10:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5084,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4744:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5087,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 5106,
                        "src": "4764:13:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5086,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4764:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5089,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 5106,
                        "src": "4787:19:25",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5088,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4787:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4714:98:25"
                  },
                  "returnParameters": {
                    "id": 5092,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4839:0:25"
                  },
                  "scope": 5199,
                  "src": "4697:227:25",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    4851
                  ],
                  "body": {
                    "id": 5133,
                    "nodeType": "Block",
                    "src": "5202:92:25",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5122,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  5176
                                ],
                                "referencedDeclaration": 5176,
                                "src": "5227:10:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 5123,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5227:12:25",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 5121,
                            "name": "_requireMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "5212:14:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 5124,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5212:28:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5125,
                        "nodeType": "ExpressionStatement",
                        "src": "5212:28:25"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5127,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5109,
                              "src": "5265:2:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5128,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5112,
                              "src": "5269:3:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            },
                            {
                              "id": 5129,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5115,
                              "src": "5274:6:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            },
                            {
                              "id": 5130,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5117,
                              "src": "5282:4:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 5126,
                            "name": "_safeBatchMint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3380,
                            "src": "5250:14:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 5131,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5250:37:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5132,
                        "nodeType": "ExpressionStatement",
                        "src": "5250:37:25"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5107,
                    "nodeType": "StructuredDocumentation",
                    "src": "4930:96:25",
                    "text": "@inheritdoc IERC1155721InventoryMintable\n @dev Reverts if the sender is not a minter."
                  },
                  "functionSelector": "0d6a5bbb",
                  "id": 5134,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeBatchMint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5119,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5193:8:25"
                  },
                  "parameters": {
                    "id": 5118,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5109,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 5134,
                        "src": "5063:10:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5108,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5063:7:25",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5112,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 5134,
                        "src": "5083:22:25",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5110,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5083:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5111,
                          "nodeType": "ArrayTypeName",
                          "src": "5083:9:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5115,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 5134,
                        "src": "5115:25:25",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5113,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5115:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5114,
                          "nodeType": "ArrayTypeName",
                          "src": "5115:9:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5117,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 5134,
                        "src": "5150:19:25",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5116,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5150:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5053:122:25"
                  },
                  "returnParameters": {
                    "id": 5120,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5202:0:25"
                  },
                  "scope": 5199,
                  "src": "5031:263:25",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    4821
                  ],
                  "body": {
                    "id": 5162,
                    "nodeType": "Block",
                    "src": "5723:98:25",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5151,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  5176
                                ],
                                "referencedDeclaration": 5176,
                                "src": "5748:10:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 5152,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5748:12:25",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 5150,
                            "name": "_requireMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "5733:14:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 5153,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5733:28:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5154,
                        "nodeType": "ExpressionStatement",
                        "src": "5733:28:25"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5156,
                              "name": "recipients",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5138,
                              "src": "5784:10:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            {
                              "id": 5157,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5141,
                              "src": "5796:3:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            },
                            {
                              "id": 5158,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5144,
                              "src": "5801:6:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            },
                            {
                              "id": 5159,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5146,
                              "src": "5809:4:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 5155,
                            "name": "_safeDeliver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3566,
                            "src": "5771:12:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_bytes_calldata_ptr_$returns$__$",
                              "typeString": "function (address[] calldata,uint256[] calldata,uint256[] calldata,bytes calldata)"
                            }
                          },
                          "id": 5160,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5771:43:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5161,
                        "nodeType": "ExpressionStatement",
                        "src": "5771:43:25"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5135,
                    "nodeType": "StructuredDocumentation",
                    "src": "5431:99:25",
                    "text": "@inheritdoc IERC1155721InventoryDeliverable\n @dev Reverts if the sender is not a minter."
                  },
                  "functionSelector": "e8ab9ccc",
                  "id": 5163,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeDeliver",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5148,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5714:8:25"
                  },
                  "parameters": {
                    "id": 5147,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5138,
                        "mutability": "mutable",
                        "name": "recipients",
                        "nodeType": "VariableDeclaration",
                        "scope": 5163,
                        "src": "5565:29:25",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5136,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5565:7:25",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 5137,
                          "nodeType": "ArrayTypeName",
                          "src": "5565:9:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5141,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 5163,
                        "src": "5604:22:25",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5139,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5604:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5140,
                          "nodeType": "ArrayTypeName",
                          "src": "5604:9:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5144,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 5163,
                        "src": "5636:25:25",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5142,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5636:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5143,
                          "nodeType": "ArrayTypeName",
                          "src": "5636:9:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5146,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 5163,
                        "src": "5671:19:25",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5145,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5671:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5555:141:25"
                  },
                  "returnParameters": {
                    "id": 5149,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5723:0:25"
                  },
                  "scope": 5199,
                  "src": "5535:286:25",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    229,
                    5484
                  ],
                  "body": {
                    "id": 5175,
                    "nodeType": "Block",
                    "src": "6078:61:25",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 5171,
                              "name": "UsingUniversalForwarding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5530,
                              "src": "6095:24:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$5530_$",
                                "typeString": "type(contract UsingUniversalForwarding)"
                              }
                            },
                            "id": 5172,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_msgSender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5484,
                            "src": "6095:35:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 5173,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6095:37:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "functionReturnParameters": 5170,
                        "id": 5174,
                        "nodeType": "Return",
                        "src": "6088:44:25"
                      }
                    ]
                  },
                  "id": 5176,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgSender",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5167,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 5165,
                        "name": "ManagedIdentity",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 239,
                        "src": "6009:15:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ManagedIdentity_$239",
                          "typeString": "contract ManagedIdentity"
                        }
                      },
                      {
                        "id": 5166,
                        "name": "UsingUniversalForwarding",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5530,
                        "src": "6026:24:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_UsingUniversalForwarding_$5530",
                          "typeString": "contract UsingUniversalForwarding"
                        }
                      }
                    ],
                    "src": "6000:51:25"
                  },
                  "parameters": {
                    "id": 5164,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5975:2:25"
                  },
                  "returnParameters": {
                    "id": 5170,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5169,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 5176,
                        "src": "6061:15:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 5168,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6061:15:25",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6060:17:25"
                  },
                  "scope": 5199,
                  "src": "5956:183:25",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    238,
                    5529
                  ],
                  "body": {
                    "id": 5188,
                    "nodeType": "Block",
                    "src": "6266:59:25",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 5184,
                              "name": "UsingUniversalForwarding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5530,
                              "src": "6283:24:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$5530_$",
                                "typeString": "type(contract UsingUniversalForwarding)"
                              }
                            },
                            "id": 5185,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_msgData",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5529,
                            "src": "6283:33:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$",
                              "typeString": "function () view returns (bytes calldata)"
                            }
                          },
                          "id": 5186,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6283:35:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "functionReturnParameters": 5183,
                        "id": 5187,
                        "nodeType": "Return",
                        "src": "6276:42:25"
                      }
                    ]
                  },
                  "id": 5189,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgData",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5180,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 5178,
                        "name": "ManagedIdentity",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 239,
                        "src": "6196:15:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ManagedIdentity_$239",
                          "typeString": "contract ManagedIdentity"
                        }
                      },
                      {
                        "id": 5179,
                        "name": "UsingUniversalForwarding",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5530,
                        "src": "6213:24:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_UsingUniversalForwarding_$5530",
                          "typeString": "contract UsingUniversalForwarding"
                        }
                      }
                    ],
                    "src": "6187:51:25"
                  },
                  "parameters": {
                    "id": 5177,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6162:2:25"
                  },
                  "returnParameters": {
                    "id": 5183,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5182,
                        "mutability": "mutable",
                        "name": "ret",
                        "nodeType": "VariableDeclaration",
                        "scope": 5189,
                        "src": "6248:16:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5181,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6248:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6247:18:25"
                  },
                  "scope": 5199,
                  "src": "6145:180:25",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5197,
                    "nodeType": "Block",
                    "src": "6520:34:25",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 5194,
                            "name": "_msgData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              5189
                            ],
                            "referencedDeclaration": 5189,
                            "src": "6537:8:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () view returns (bytes memory)"
                            }
                          },
                          "id": 5195,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6537:10:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 5193,
                        "id": 5196,
                        "nodeType": "Return",
                        "src": "6530:17:25"
                      }
                    ]
                  },
                  "functionSelector": "c4c2bfdc",
                  "id": 5198,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "msgData",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5190,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6476:2:25"
                  },
                  "returnParameters": {
                    "id": 5193,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5192,
                        "mutability": "mutable",
                        "name": "ret",
                        "nodeType": "VariableDeclaration",
                        "scope": 5198,
                        "src": "6502:16:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5191,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6502:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6501:18:25"
                  },
                  "scope": 5199,
                  "src": "6460:94:25",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 5200,
              "src": "1397:5159:25"
            }
          ],
          "src": "33:6524:25"
        },
        "id": 25
      },
      "contracts/token/ERC721/interfaces/IERC721.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC721/interfaces/IERC721.sol",
          "exportedSymbols": {
            "IERC721": [
              5285
            ]
          },
          "id": 5286,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5201,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:26"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 5202,
                "nodeType": "StructuredDocumentation",
                "src": "66:299:26",
                "text": " @title ERC721 Non-Fungible Token Standard, basic interface (functions).\n @dev See https://eips.ethereum.org/EIPS/eip-721\n @dev This interface only contains the standard functions. See IERC721Events for the events.\n @dev Note: The ERC-165 identifier for this interface is 0x80ac58cd."
              },
              "fullyImplemented": false,
              "id": 5285,
              "linearizedBaseContracts": [
                5285
              ],
              "name": "IERC721",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 5203,
                    "nodeType": "StructuredDocumentation",
                    "src": "390:195:26",
                    "text": " Gets the balance of the specified address\n @param owner address to query the balance of\n @return balance uint256 representing the amount owned by the passed address"
                  },
                  "functionSelector": "70a08231",
                  "id": 5210,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5206,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5205,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 5210,
                        "src": "609:13:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5204,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "609:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "608:15:26"
                  },
                  "returnParameters": {
                    "id": 5209,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5208,
                        "mutability": "mutable",
                        "name": "balance",
                        "nodeType": "VariableDeclaration",
                        "scope": 5210,
                        "src": "647:15:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5207,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "647:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "646:17:26"
                  },
                  "scope": 5285,
                  "src": "590:74:26",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 5211,
                    "nodeType": "StructuredDocumentation",
                    "src": "670:183:26",
                    "text": " Gets the owner of the specified ID\n @param tokenId uint256 ID to query the owner of\n @return owner address currently marked as the owner of the given ID"
                  },
                  "functionSelector": "6352211e",
                  "id": 5218,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ownerOf",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5214,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5213,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5218,
                        "src": "875:15:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5212,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "875:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "874:17:26"
                  },
                  "returnParameters": {
                    "id": 5217,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5216,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 5218,
                        "src": "915:13:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5215,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "915:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "914:15:26"
                  },
                  "scope": 5285,
                  "src": "858:72:26",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 5219,
                    "nodeType": "StructuredDocumentation",
                    "src": "936:420:26",
                    "text": " Approves another address to transfer the given token ID\n @dev The zero address indicates there is no approved address.\n @dev There can only be one approved address per token at a given time.\n @dev Can only be called by the token owner or an approved operator.\n @param to address to be approved for the given token ID\n @param tokenId uint256 ID of the token to be approved"
                  },
                  "functionSelector": "095ea7b3",
                  "id": 5226,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5224,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5221,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 5226,
                        "src": "1378:10:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5220,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1378:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5223,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5226,
                        "src": "1390:15:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5222,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1390:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1377:29:26"
                  },
                  "returnParameters": {
                    "id": 5225,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1415:0:26"
                  },
                  "scope": 5285,
                  "src": "1361:55:26",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 5227,
                    "nodeType": "StructuredDocumentation",
                    "src": "1422:283:26",
                    "text": " Gets the approved address for a token ID, or zero if no address set\n @dev Reverts if the token ID does not exist.\n @param tokenId uint256 ID of the token to query the approval of\n @return operator address currently approved for the given token ID"
                  },
                  "functionSelector": "081812fc",
                  "id": 5234,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getApproved",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5230,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5229,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5234,
                        "src": "1731:15:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5228,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1731:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1730:17:26"
                  },
                  "returnParameters": {
                    "id": 5233,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5232,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 5234,
                        "src": "1771:16:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5231,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1771:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1770:18:26"
                  },
                  "scope": 5285,
                  "src": "1710:79:26",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 5235,
                    "nodeType": "StructuredDocumentation",
                    "src": "1795:287:26",
                    "text": " Sets or unsets the approval of a given operator\n @dev An operator is allowed to transfer all tokens of the sender on their behalf\n @param operator operator address to set the approval\n @param approved representing the status of the approval to be set"
                  },
                  "functionSelector": "a22cb465",
                  "id": 5242,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setApprovalForAll",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5240,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5237,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 5242,
                        "src": "2114:16:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5236,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2114:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5239,
                        "mutability": "mutable",
                        "name": "approved",
                        "nodeType": "VariableDeclaration",
                        "scope": 5242,
                        "src": "2132:13:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 5238,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2132:4:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2113:33:26"
                  },
                  "returnParameters": {
                    "id": 5241,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2155:0:26"
                  },
                  "scope": 5285,
                  "src": "2087:69:26",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 5243,
                    "nodeType": "StructuredDocumentation",
                    "src": "2162:305:26",
                    "text": " Tells whether an operator is approved by a given owner\n @param owner owner address which you want to query the approval of\n @param operator operator address which you want to query the approval of\n @return bool whether the given operator is approved by the given owner"
                  },
                  "functionSelector": "e985e9c5",
                  "id": 5252,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isApprovedForAll",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5248,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5245,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 5252,
                        "src": "2498:13:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5244,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2498:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5247,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 5252,
                        "src": "2513:16:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5246,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2513:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2497:33:26"
                  },
                  "returnParameters": {
                    "id": 5251,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5250,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 5252,
                        "src": "2554:4:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 5249,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2554:4:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2553:6:26"
                  },
                  "scope": 5285,
                  "src": "2472:88:26",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 5253,
                    "nodeType": "StructuredDocumentation",
                    "src": "2566:428:26",
                    "text": " Transfers the ownership of a given token ID to another address\n @dev Usage of this method is discouraged, use `safeTransferFrom` whenever possible\n @dev Requires the msg sender to be the owner, approved, or operator\n @param from current owner of the token\n @param to address to receive the ownership of the given token ID\n @param tokenId uint256 ID of the token to be transferred"
                  },
                  "functionSelector": "23b872dd",
                  "id": 5262,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5260,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5255,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 5262,
                        "src": "3030:12:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5254,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3030:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5257,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 5262,
                        "src": "3052:10:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5256,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3052:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5259,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5262,
                        "src": "3072:15:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5258,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3072:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3020:73:26"
                  },
                  "returnParameters": {
                    "id": 5261,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3102:0:26"
                  },
                  "scope": 5285,
                  "src": "2999:104:26",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 5263,
                    "nodeType": "StructuredDocumentation",
                    "src": "3109:636:26",
                    "text": " Safely transfers the ownership of a given token ID to another address\n If the target address is a contract, it must implement `onERC721Received`,\n which is called upon a safe transfer, and return the magic value\n `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise,\n the transfer is reverted.\n @dev Requires the msg sender to be the owner, approved, or operator\n @param from current owner of the token\n @param to address to receive the ownership of the given token ID\n @param tokenId uint256 ID of the token to be transferred"
                  },
                  "functionSelector": "42842e0e",
                  "id": 5272,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5270,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5265,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 5272,
                        "src": "3785:12:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5264,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3785:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5267,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 5272,
                        "src": "3807:10:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5266,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3807:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5269,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5272,
                        "src": "3827:15:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5268,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3827:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3775:73:26"
                  },
                  "returnParameters": {
                    "id": 5271,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3857:0:26"
                  },
                  "scope": 5285,
                  "src": "3750:108:26",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 5273,
                    "nodeType": "StructuredDocumentation",
                    "src": "3864:707:26",
                    "text": " Safely transfers the ownership of a given token ID to another address\n If the target address is a contract, it must implement `onERC721Received`,\n which is called upon a safe transfer, and return the magic value\n `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise,\n the transfer is reverted.\n @dev Requires the msg sender to be the owner, approved, or operator\n @param from current owner of the token\n @param to address to receive the ownership of the given token ID\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes data to send along with a safe transfer check"
                  },
                  "functionSelector": "b88d4fde",
                  "id": 5284,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5282,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5275,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 5284,
                        "src": "4611:12:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5274,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4611:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5277,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 5284,
                        "src": "4633:10:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5276,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4633:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5279,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5284,
                        "src": "4653:15:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5278,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4653:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5281,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 5284,
                        "src": "4678:19:26",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5280,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4678:5:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4601:102:26"
                  },
                  "returnParameters": {
                    "id": 5283,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4712:0:26"
                  },
                  "scope": 5285,
                  "src": "4576:137:26",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 5286,
              "src": "366:4349:26"
            }
          ],
          "src": "33:4683:26"
        },
        "id": 26
      },
      "contracts/token/ERC721/interfaces/IERC721BatchTransfer.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC721/interfaces/IERC721BatchTransfer.sol",
          "exportedSymbols": {
            "IERC721BatchTransfer": [
              5300
            ]
          },
          "id": 5301,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5287,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:27"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 5288,
                "nodeType": "StructuredDocumentation",
                "src": "66:211:27",
                "text": " @title ERC721 Non-Fungible Token Standard, optional extension: Batch Transfer.\n @dev See https://eips.ethereum.org/EIPS/eip-721\n @dev Note: The ERC-165 identifier for this interface is 0xf3993d11."
              },
              "fullyImplemented": false,
              "id": 5300,
              "linearizedBaseContracts": [
                5300
              ],
              "name": "IERC721BatchTransfer",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 5289,
                    "nodeType": "StructuredDocumentation",
                    "src": "315:505:27",
                    "text": " Unsafely transfers a batch of tokens.\n @dev Reverts if `to` is the zero address.\n @dev Reverts if the sender is not approved.\n @dev Reverts if one of `tokenIds` is not owned by `from`.\n @dev Resets the token approval for each of `tokenIds`.\n @dev Emits an {IERC721-Transfer} event for each of `tokenIds`.\n @param from Current tokens owner.\n @param to Address of the new token owner.\n @param tokenIds Identifiers of the tokens to transfer."
                  },
                  "functionSelector": "f3993d11",
                  "id": 5299,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5297,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5291,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 5299,
                        "src": "861:12:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5290,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "861:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5293,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 5299,
                        "src": "883:10:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5292,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "883:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5296,
                        "mutability": "mutable",
                        "name": "tokenIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 5299,
                        "src": "903:27:27",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5294,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "903:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5295,
                          "nodeType": "ArrayTypeName",
                          "src": "903:9:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "851:85:27"
                  },
                  "returnParameters": {
                    "id": 5298,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "945:0:27"
                  },
                  "scope": 5300,
                  "src": "825:121:27",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 5301,
              "src": "278:670:27"
            }
          ],
          "src": "33:916:27"
        },
        "id": 27
      },
      "contracts/token/ERC721/interfaces/IERC721Metadata.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC721/interfaces/IERC721Metadata.sol",
          "exportedSymbols": {
            "IERC721Metadata": [
              5324
            ]
          },
          "id": 5325,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5302,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:28"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 5303,
                "nodeType": "StructuredDocumentation",
                "src": "66:205:28",
                "text": " @title ERC721 Non-Fungible Token Standard, optional extension: Metadata.\n @dev See https://eips.ethereum.org/EIPS/eip-721\n @dev Note: The ERC-165 identifier for this interface is 0x5b5e139f."
              },
              "fullyImplemented": false,
              "id": 5324,
              "linearizedBaseContracts": [
                5324
              ],
              "name": "IERC721Metadata",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 5304,
                    "nodeType": "StructuredDocumentation",
                    "src": "304:93:28",
                    "text": " @dev Gets the token name\n @return string representing the token name"
                  },
                  "functionSelector": "06fdde03",
                  "id": 5309,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "name",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5305,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "415:2:28"
                  },
                  "returnParameters": {
                    "id": 5308,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5307,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 5309,
                        "src": "441:13:28",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5306,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "441:6:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "440:15:28"
                  },
                  "scope": 5324,
                  "src": "402:54:28",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 5310,
                    "nodeType": "StructuredDocumentation",
                    "src": "462:97:28",
                    "text": " @dev Gets the token symbol\n @return string representing the token symbol"
                  },
                  "functionSelector": "95d89b41",
                  "id": 5315,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "symbol",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5311,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "579:2:28"
                  },
                  "returnParameters": {
                    "id": 5314,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5313,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 5315,
                        "src": "605:13:28",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5312,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "605:6:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "604:15:28"
                  },
                  "scope": 5324,
                  "src": "564:56:28",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 5316,
                    "nodeType": "StructuredDocumentation",
                    "src": "626:232:28",
                    "text": " @dev Returns an URI for a given token ID\n Throws if the token ID does not exist. May return an empty string.\n @param tokenId uint256 ID of the token to query\n @return string URI of given token ID"
                  },
                  "functionSelector": "c87b56dd",
                  "id": 5323,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tokenURI",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5319,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5318,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5323,
                        "src": "881:15:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5317,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "881:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "880:17:28"
                  },
                  "returnParameters": {
                    "id": 5322,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5321,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 5323,
                        "src": "921:13:28",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5320,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "921:6:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "920:15:28"
                  },
                  "scope": 5324,
                  "src": "863:73:28",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 5325,
              "src": "272:666:28"
            }
          ],
          "src": "33:906:28"
        },
        "id": 28
      },
      "contracts/token/ERC721/interfaces/IERC721Receiver.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC721/interfaces/IERC721Receiver.sol",
          "exportedSymbols": {
            "IERC721Receiver": [
              5342
            ]
          },
          "id": 5343,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5326,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:29"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 5327,
                "nodeType": "StructuredDocumentation",
                "src": "66:287:29",
                "text": " @title ERC721 Non-Fungible Token Standard, Tokens Receiver.\n Interface for any contract that wants to support safeTransfers from ERC721 asset contracts.\n @dev See https://eips.ethereum.org/EIPS/eip-721\n @dev Note: The ERC-165 identifier for this interface is 0x150b7a02."
              },
              "fullyImplemented": false,
              "id": 5342,
              "linearizedBaseContracts": [
                5342
              ],
              "name": "IERC721Receiver",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 5328,
                    "nodeType": "StructuredDocumentation",
                    "src": "386:868:29",
                    "text": " Handles the receipt of an NFT.\n @dev The ERC721 smart contract calls this function on the recipient\n  after a {IERC721-safeTransferFrom}. This function MUST return the function selector,\n  otherwise the caller will revert the transaction. The selector to be\n  returned can be obtained as `this.onERC721Received.selector`. This\n  function MAY throw to revert and reject the transfer.\n @dev Note: the ERC721 contract address is always the message sender.\n @param operator The address which called `safeTransferFrom` function\n @param from The address which previously owned the token\n @param tokenId The NFT identifier which is being transferred\n @param data Additional data with no specified format\n @return bytes4 `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`"
                  },
                  "functionSelector": "150b7a02",
                  "id": 5341,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC721Received",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5337,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5330,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 5341,
                        "src": "1294:16:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5329,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1294:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5332,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 5341,
                        "src": "1320:12:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5331,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1320:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5334,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5341,
                        "src": "1342:15:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5333,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1342:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5336,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 5341,
                        "src": "1367:19:29",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5335,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1367:5:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1284:108:29"
                  },
                  "returnParameters": {
                    "id": 5340,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5339,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 5341,
                        "src": "1411:6:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 5338,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1411:6:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1410:8:29"
                  },
                  "scope": 5342,
                  "src": "1259:160:29",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 5343,
              "src": "354:1067:29"
            }
          ],
          "src": "33:1389:29"
        },
        "id": 29
      },
      "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IERC2771.sol": {
        "ast": {
          "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IERC2771.sol",
          "exportedSymbols": {
            "IERC2771": [
              5352
            ]
          },
          "id": 5353,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5344,
              "literals": [
                "solidity",
                "^",
                "0.7",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:30"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 5352,
              "linearizedBaseContracts": [
                5352
              ],
              "name": "IERC2771",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "572b6c05",
                  "id": 5351,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isTrustedForwarder",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5347,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5346,
                        "mutability": "mutable",
                        "name": "forwarder",
                        "nodeType": "VariableDeclaration",
                        "scope": 5351,
                        "src": "110:17:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5345,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "110:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "109:19:30"
                  },
                  "returnParameters": {
                    "id": 5350,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5349,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 5351,
                        "src": "152:4:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 5348,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "152:4:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "151:6:30"
                  },
                  "scope": 5352,
                  "src": "82:76:30",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 5353,
              "src": "57:103:30"
            }
          ],
          "src": "32:129:30"
        },
        "id": 30
      },
      "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol": {
        "ast": {
          "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol",
          "exportedSymbols": {
            "IForwarderRegistry": [
              5364
            ]
          },
          "id": 5365,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5354,
              "literals": [
                "solidity",
                "^",
                "0.7",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:31"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 5364,
              "linearizedBaseContracts": [
                5364
              ],
              "name": "IForwarderRegistry",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "e60125d6",
                  "id": 5363,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isForwarderFor",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5359,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5356,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 5363,
                        "src": "116:7:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5355,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "116:7:31",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5358,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 5363,
                        "src": "125:7:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5357,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "125:7:31",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "115:18:31"
                  },
                  "returnParameters": {
                    "id": 5362,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5361,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 5363,
                        "src": "157:4:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 5360,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "157:4:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "156:6:31"
                  },
                  "scope": 5364,
                  "src": "92:71:31",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 5365,
              "src": "57:108:31"
            }
          ],
          "src": "32:134:31"
        },
        "id": 31
      },
      "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingAppendedCallData.sol": {
        "ast": {
          "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingAppendedCallData.sol",
          "exportedSymbols": {
            "UsingAppendedCallData": [
              5389
            ]
          },
          "id": 5390,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5366,
              "literals": [
                "solidity",
                "^",
                "0.7",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:32"
            },
            {
              "abstract": true,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 5389,
              "linearizedBaseContracts": [
                5389
              ],
              "name": "UsingAppendedCallData",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 5372,
                    "nodeType": "Block",
                    "src": "195:427:32",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "536:80:32",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "550:56:32",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "564:2:32",
                                    "type": "",
                                    "value": "96"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [],
                                            "functionName": {
                                              "name": "calldatasize",
                                              "nodeType": "YulIdentifier",
                                              "src": "585:12:32"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "585:14:32"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "601:2:32",
                                            "type": "",
                                            "value": "20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "581:3:32"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "581:23:32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "568:12:32"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "568:37:32"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "560:3:32"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "560:46:32"
                              },
                              "variableNames": [
                                {
                                  "name": "sender",
                                  "nodeType": "YulIdentifier",
                                  "src": "550:6:32"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 5369,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "550:6:32",
                            "valueSize": 1
                          }
                        ],
                        "id": 5371,
                        "nodeType": "InlineAssembly",
                        "src": "527:89:32"
                      }
                    ]
                  },
                  "id": 5373,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_lastAppendedDataAsSender",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5367,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "137:2:32"
                  },
                  "returnParameters": {
                    "id": 5370,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5369,
                        "mutability": "mutable",
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 5373,
                        "src": "171:22:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 5368,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "171:15:32",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "170:24:32"
                  },
                  "scope": 5389,
                  "src": "103:519:32",
                  "stateMutability": "pure",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5387,
                    "nodeType": "Block",
                    "src": "722:55:32",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "expression": {
                              "id": 5378,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "739:3:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 5379,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "data",
                            "nodeType": "MemberAccess",
                            "src": "739:8:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          },
                          "endExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5384,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "expression": {
                                  "id": 5380,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "749:3:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 5381,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "data",
                                "nodeType": "MemberAccess",
                                "src": "749:8:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              },
                              "id": 5382,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "749:15:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "hexValue": "3230",
                              "id": 5383,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "767:2:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_20_by_1",
                                "typeString": "int_const 20"
                              },
                              "value": "20"
                            },
                            "src": "749:20:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5385,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexRangeAccess",
                          "src": "739:31:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr_slice",
                            "typeString": "bytes calldata slice"
                          }
                        },
                        "functionReturnParameters": 5377,
                        "id": 5386,
                        "nodeType": "Return",
                        "src": "732:38:32"
                      }
                    ]
                  },
                  "id": 5388,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgDataAssuming20BytesAppendedData",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5374,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "672:2:32"
                  },
                  "returnParameters": {
                    "id": 5377,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5376,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 5388,
                        "src": "706:14:32",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5375,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "706:5:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "705:16:32"
                  },
                  "scope": 5389,
                  "src": "628:149:32",
                  "stateMutability": "pure",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 5390,
              "src": "57:722:32"
            }
          ],
          "src": "32:748:32"
        },
        "id": 32
      },
      "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol": {
        "ast": {
          "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol",
          "exportedSymbols": {
            "IERC2771": [
              5352
            ],
            "IForwarderRegistry": [
              5364
            ],
            "UsingAppendedCallData": [
              5389
            ],
            "UsingUniversalForwarding": [
              5530
            ]
          },
          "id": 5531,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5391,
              "literals": [
                "solidity",
                "^",
                "0.7",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:33"
            },
            {
              "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingAppendedCallData.sol",
              "file": "./UsingAppendedCallData.sol",
              "id": 5392,
              "nodeType": "ImportDirective",
              "scope": 5531,
              "sourceUnit": 5390,
              "src": "57:37:33",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IERC2771.sol",
              "file": "./IERC2771.sol",
              "id": 5393,
              "nodeType": "ImportDirective",
              "scope": 5531,
              "sourceUnit": 5353,
              "src": "95:24:33",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol",
              "file": "./IForwarderRegistry.sol",
              "id": 5394,
              "nodeType": "ImportDirective",
              "scope": 5531,
              "sourceUnit": 5365,
              "src": "120:34:33",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 5395,
                    "name": "UsingAppendedCallData",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5389,
                    "src": "202:21:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_UsingAppendedCallData_$5389",
                      "typeString": "contract UsingAppendedCallData"
                    }
                  },
                  "id": 5396,
                  "nodeType": "InheritanceSpecifier",
                  "src": "202:21:33"
                },
                {
                  "baseName": {
                    "id": 5397,
                    "name": "IERC2771",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5352,
                    "src": "225:8:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC2771_$5352",
                      "typeString": "contract IERC2771"
                    }
                  },
                  "id": 5398,
                  "nodeType": "InheritanceSpecifier",
                  "src": "225:8:33"
                }
              ],
              "contractDependencies": [
                5352,
                5389
              ],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 5530,
              "linearizedBaseContracts": [
                5530,
                5352,
                5389
              ],
              "name": "UsingUniversalForwarding",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 5400,
                  "mutability": "immutable",
                  "name": "_forwarderRegistry",
                  "nodeType": "VariableDeclaration",
                  "scope": 5530,
                  "src": "240:56:33",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IForwarderRegistry_$5364",
                    "typeString": "contract IForwarderRegistry"
                  },
                  "typeName": {
                    "id": 5399,
                    "name": "IForwarderRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5364,
                    "src": "240:18:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IForwarderRegistry_$5364",
                      "typeString": "contract IForwarderRegistry"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5402,
                  "mutability": "immutable",
                  "name": "_universalForwarder",
                  "nodeType": "VariableDeclaration",
                  "scope": 5530,
                  "src": "302:46:33",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5401,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "302:7:33",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5417,
                    "nodeType": "Block",
                    "src": "433:105:33",
                    "statements": [
                      {
                        "expression": {
                          "id": 5411,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5409,
                            "name": "_universalForwarder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5402,
                            "src": "443:19:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 5410,
                            "name": "universalForwarder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5406,
                            "src": "465:18:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "443:40:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5412,
                        "nodeType": "ExpressionStatement",
                        "src": "443:40:33"
                      },
                      {
                        "expression": {
                          "id": 5415,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5413,
                            "name": "_forwarderRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5400,
                            "src": "493:18:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IForwarderRegistry_$5364",
                              "typeString": "contract IForwarderRegistry"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 5414,
                            "name": "forwarderRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5404,
                            "src": "514:17:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IForwarderRegistry_$5364",
                              "typeString": "contract IForwarderRegistry"
                            }
                          },
                          "src": "493:38:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IForwarderRegistry_$5364",
                            "typeString": "contract IForwarderRegistry"
                          }
                        },
                        "id": 5416,
                        "nodeType": "ExpressionStatement",
                        "src": "493:38:33"
                      }
                    ]
                  },
                  "id": 5418,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5407,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5404,
                        "mutability": "mutable",
                        "name": "forwarderRegistry",
                        "nodeType": "VariableDeclaration",
                        "scope": 5418,
                        "src": "367:36:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IForwarderRegistry_$5364",
                          "typeString": "contract IForwarderRegistry"
                        },
                        "typeName": {
                          "id": 5403,
                          "name": "IForwarderRegistry",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 5364,
                          "src": "367:18:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IForwarderRegistry_$5364",
                            "typeString": "contract IForwarderRegistry"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5406,
                        "mutability": "mutable",
                        "name": "universalForwarder",
                        "nodeType": "VariableDeclaration",
                        "scope": 5418,
                        "src": "405:26:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5405,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "405:7:33",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "366:66:33"
                  },
                  "returnParameters": {
                    "id": 5408,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "433:0:33"
                  },
                  "scope": 5530,
                  "src": "355:183:33",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    5351
                  ],
                  "body": {
                    "id": 5437,
                    "nodeType": "Block",
                    "src": "637:100:33",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 5435,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 5428,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 5426,
                              "name": "forwarder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5420,
                              "src": "654:9:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 5427,
                              "name": "_universalForwarder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5402,
                              "src": "667:19:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "654:32:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 5434,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 5429,
                              "name": "forwarder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5420,
                              "src": "690:9:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "id": 5432,
                                  "name": "_forwarderRegistry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5400,
                                  "src": "711:18:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IForwarderRegistry_$5364",
                                    "typeString": "contract IForwarderRegistry"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IForwarderRegistry_$5364",
                                    "typeString": "contract IForwarderRegistry"
                                  }
                                ],
                                "id": 5431,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "703:7:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5430,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "703:7:33",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5433,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "703:27:33",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "690:40:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "654:76:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 5425,
                        "id": 5436,
                        "nodeType": "Return",
                        "src": "647:83:33"
                      }
                    ]
                  },
                  "functionSelector": "572b6c05",
                  "id": 5438,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isTrustedForwarder",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5422,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "613:8:33"
                  },
                  "parameters": {
                    "id": 5421,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5420,
                        "mutability": "mutable",
                        "name": "forwarder",
                        "nodeType": "VariableDeclaration",
                        "scope": 5438,
                        "src": "572:17:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5419,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "572:7:33",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "571:19:33"
                  },
                  "returnParameters": {
                    "id": 5425,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5424,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 5438,
                        "src": "631:4:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 5423,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "631:4:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "630:6:33"
                  },
                  "scope": 5530,
                  "src": "544:193:33",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 5483,
                    "nodeType": "Block",
                    "src": "813:834:33",
                    "statements": [
                      {
                        "assignments": [
                          5444
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5444,
                            "mutability": "mutable",
                            "name": "msgSender",
                            "nodeType": "VariableDeclaration",
                            "scope": 5483,
                            "src": "823:25:33",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            "typeName": {
                              "id": 5443,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "823:15:33",
                              "stateMutability": "payable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5447,
                        "initialValue": {
                          "expression": {
                            "id": 5445,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "851:3:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 5446,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "851:10:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "823:38:33"
                      },
                      {
                        "assignments": [
                          5449
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5449,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 5483,
                            "src": "871:22:33",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            "typeName": {
                              "id": 5448,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "871:15:33",
                              "stateMutability": "payable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5452,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 5450,
                            "name": "_lastAppendedDataAsSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5373,
                            "src": "896:25:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$__$returns$_t_address_payable_$",
                              "typeString": "function () pure returns (address payable)"
                            }
                          },
                          "id": 5451,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "896:27:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "871:52:33"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 5462,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 5458,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 5453,
                              "name": "msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5444,
                              "src": "937:9:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "id": 5456,
                                  "name": "_forwarderRegistry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5400,
                                  "src": "958:18:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IForwarderRegistry_$5364",
                                    "typeString": "contract IForwarderRegistry"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IForwarderRegistry_$5364",
                                    "typeString": "contract IForwarderRegistry"
                                  }
                                ],
                                "id": 5455,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "950:7:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5454,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "950:7:33",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5457,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "950:27:33",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "937:40:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 5461,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 5459,
                              "name": "msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5444,
                              "src": "981:9:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 5460,
                              "name": "_universalForwarder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5402,
                              "src": "994:19:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "981:32:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "937:76:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5466,
                        "nodeType": "IfStatement",
                        "src": "933:166:33",
                        "trueBody": {
                          "id": 5465,
                          "nodeType": "Block",
                          "src": "1015:84:33",
                          "statements": [
                            {
                              "expression": {
                                "id": 5463,
                                "name": "sender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5449,
                                "src": "1082:6:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "functionReturnParameters": 5442,
                              "id": 5464,
                              "nodeType": "Return",
                              "src": "1075:13:33"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 5476,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            "id": 5470,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 5467,
                              "name": "msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5444,
                              "src": "1496:9:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "expression": {
                                "id": 5468,
                                "name": "tx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -26,
                                "src": "1509:2:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_transaction",
                                  "typeString": "tx"
                                }
                              },
                              "id": 5469,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "origin",
                              "nodeType": "MemberAccess",
                              "src": "1509:9:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "1496:22:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 5473,
                                "name": "sender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5449,
                                "src": "1556:6:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              {
                                "id": 5474,
                                "name": "msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5444,
                                "src": "1564:9:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              ],
                              "expression": {
                                "id": 5471,
                                "name": "_forwarderRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5400,
                                "src": "1522:18:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IForwarderRegistry_$5364",
                                  "typeString": "contract IForwarderRegistry"
                                }
                              },
                              "id": 5472,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "isForwarderFor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5363,
                              "src": "1522:33:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_bool_$",
                                "typeString": "function (address,address) view external returns (bool)"
                              }
                            },
                            "id": 5475,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1522:52:33",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1496:78:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5480,
                        "nodeType": "IfStatement",
                        "src": "1492:122:33",
                        "trueBody": {
                          "id": 5479,
                          "nodeType": "Block",
                          "src": "1576:38:33",
                          "statements": [
                            {
                              "expression": {
                                "id": 5477,
                                "name": "sender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5449,
                                "src": "1597:6:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "functionReturnParameters": 5442,
                              "id": 5478,
                              "nodeType": "Return",
                              "src": "1590:13:33"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 5481,
                          "name": "msgSender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5444,
                          "src": "1631:9:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "functionReturnParameters": 5442,
                        "id": 5482,
                        "nodeType": "Return",
                        "src": "1624:16:33"
                      }
                    ]
                  },
                  "id": 5484,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgSender",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5439,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "762:2:33"
                  },
                  "returnParameters": {
                    "id": 5442,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5441,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 5484,
                        "src": "796:15:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 5440,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "796:15:33",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "795:17:33"
                  },
                  "scope": 5530,
                  "src": "743:904:33",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5528,
                    "nodeType": "Block",
                    "src": "1720:603:33",
                    "statements": [
                      {
                        "assignments": [
                          5490
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5490,
                            "mutability": "mutable",
                            "name": "msgSender",
                            "nodeType": "VariableDeclaration",
                            "scope": 5528,
                            "src": "1730:25:33",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            "typeName": {
                              "id": 5489,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1730:15:33",
                              "stateMutability": "payable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5493,
                        "initialValue": {
                          "expression": {
                            "id": 5491,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "1758:3:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 5492,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "1758:10:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1730:38:33"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 5503,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 5499,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 5494,
                              "name": "msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5490,
                              "src": "1782:9:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "id": 5497,
                                  "name": "_forwarderRegistry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5400,
                                  "src": "1803:18:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IForwarderRegistry_$5364",
                                    "typeString": "contract IForwarderRegistry"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IForwarderRegistry_$5364",
                                    "typeString": "contract IForwarderRegistry"
                                  }
                                ],
                                "id": 5496,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1795:7:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5495,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1795:7:33",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5498,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1795:27:33",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "1782:40:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 5502,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 5500,
                              "name": "msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5490,
                              "src": "1826:9:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 5501,
                              "name": "_universalForwarder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5402,
                              "src": "1839:19:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "1826:32:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1782:76:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5508,
                        "nodeType": "IfStatement",
                        "src": "1778:197:33",
                        "trueBody": {
                          "id": 5507,
                          "nodeType": "Block",
                          "src": "1860:115:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 5504,
                                  "name": "_msgDataAssuming20BytesAppendedData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5388,
                                  "src": "1927:35:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$__$returns$_t_bytes_calldata_ptr_$",
                                    "typeString": "function () pure returns (bytes calldata)"
                                  }
                                },
                                "id": 5505,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1927:37:33",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              },
                              "functionReturnParameters": 5488,
                              "id": 5506,
                              "nodeType": "Return",
                              "src": "1920:44:33"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 5519,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            "id": 5512,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 5509,
                              "name": "msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5490,
                              "src": "2122:9:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "expression": {
                                "id": 5510,
                                "name": "tx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -26,
                                "src": "2135:2:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_transaction",
                                  "typeString": "tx"
                                }
                              },
                              "id": 5511,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "origin",
                              "nodeType": "MemberAccess",
                              "src": "2135:9:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "2122:22:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "arguments": [
                              {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 5515,
                                  "name": "_lastAppendedDataAsSender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5373,
                                  "src": "2182:25:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$__$returns$_t_address_payable_$",
                                    "typeString": "function () pure returns (address payable)"
                                  }
                                },
                                "id": 5516,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2182:27:33",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              {
                                "id": 5517,
                                "name": "msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5490,
                                "src": "2211:9:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              ],
                              "expression": {
                                "id": 5513,
                                "name": "_forwarderRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5400,
                                "src": "2148:18:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IForwarderRegistry_$5364",
                                  "typeString": "contract IForwarderRegistry"
                                }
                              },
                              "id": 5514,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "isForwarderFor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5363,
                              "src": "2148:33:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_bool_$",
                                "typeString": "function (address,address) view external returns (bool)"
                              }
                            },
                            "id": 5518,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2148:73:33",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "2122:99:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5524,
                        "nodeType": "IfStatement",
                        "src": "2118:174:33",
                        "trueBody": {
                          "id": 5523,
                          "nodeType": "Block",
                          "src": "2223:69:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 5520,
                                  "name": "_msgDataAssuming20BytesAppendedData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5388,
                                  "src": "2244:35:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$__$returns$_t_bytes_calldata_ptr_$",
                                    "typeString": "function () pure returns (bytes calldata)"
                                  }
                                },
                                "id": 5521,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2244:37:33",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              },
                              "functionReturnParameters": 5488,
                              "id": 5522,
                              "nodeType": "Return",
                              "src": "2237:44:33"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "expression": {
                            "id": 5525,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "2308:3:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 5526,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "data",
                          "nodeType": "MemberAccess",
                          "src": "2308:8:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "functionReturnParameters": 5488,
                        "id": 5527,
                        "nodeType": "Return",
                        "src": "2301:15:33"
                      }
                    ]
                  },
                  "id": 5529,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgData",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5485,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1670:2:33"
                  },
                  "returnParameters": {
                    "id": 5488,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5487,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 5529,
                        "src": "1704:14:33",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5486,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1704:5:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1703:16:33"
                  },
                  "scope": 5530,
                  "src": "1653:670:33",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 5531,
              "src": "156:2169:33"
            }
          ],
          "src": "32:2294:33"
        },
        "id": 33
      }
    }
  }
}
